栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言--结构体】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言--结构体】

结构体初识

struct即结构体,亦被直接称为“结构”。实际编程时,经常需要用相关的不同类型的数据来描述一个数据对象。例如,描述学生的综合信息时,需要使用学生的学号、姓名、性别、成绩以及家庭住址等不同类型的数据。但是,用相关的不同类型的数据来描述一个数据对象会使编程极为不便。因此,C语言提供了一种称为结构体(struct)的数据类型,以描述需要不同类型数据的数据对象 。结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子:

struct student{

    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    float score;  //成绩
};
PS:结构体 } 后必须要加 ;  这才是完整的语句,才能构成结构体。

结构体也是一种数据类型,它由程序员自己定义,可以包含多个其他类型的数据。
像 int、float、char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。

结构体变量

既然结构体是一种数据类型,那么就可以用它来定义变量。例如:

     struct student stu1,st2;

定义了两个变量 stu1 和 stu2,它们都是 stu 类型,都由 4 个成员组成。注意关键字struct不能少。

student 就像一个“模板”,定义出来的变量都具有相同的性质。也可以将结构体比作“图纸”,将结构体变量比作“零件”,根据同一张图纸生产出来的零件的特性都是一样的。

struct student{
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    float score;  //成绩
} stu1, stu2;

也可以这样定义结构体变量,将stu1,stu2写在结构体的后面。

结构体赋值和输出
int main()
{
     struct student stu1,st2;
     //stu1.name = (char*)malloc(128*sizeof(char)); 
     
     stu1.name = "liming";
     stu1.num = 123456;
     stu1.age = 18;
     stu1.score = 100;
     
     printf("%s,%d,%d,%f,n",stu1.name,stu1.num,stu1.age,stu1.score);
     
	 return 0;
}

输出结果:

结构体指针

结构体既然是一种“数据类型”,定义结构体指针就跟前面int,char等数据类型定义指针的操作相似:

struct student *p;

在内部成员进行赋值和引用上由" . “变为” -> ",应用上指针,结构体“可玩性”就变得很大

结构体指针小应用之获取并输出学生成绩:
#include 
#include 

struct student
{   
     int score;
     char *name;

};

int main()
{    
    int n;
    printf("请输入班级人数:n");
    scanf("%d",&n);  
    
    struct student *p = (struct student *)malloc(n*sizeof(struct student));//在堆上开辟空间
    
    int i;
    //获取学生成绩信息
    for(i=0;iname = (char *)malloc(128);
       scanf("%s",p->name); 
       
       printf("请输入第%d个学生的成绩:n",i+1);
       scanf("%d",&(p->score));
       
       p++;  
           
    }
     p = p-n; //回到链表头
    //输出学生成绩   
    for(i=0;iname,p->score);
        p++;
    }
    
	system("pause");
	return 0;
}

以上引用大佬部分见解C语言结构体详解,C语言struct用法详解

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873413.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号