背景: 设计程序时,最重要的步骤之一是选择表示数据的方法。 在许多情况下,简单变量甚至是数组还不够。 为此,C提供了结构变量(structure variable)提高你表示数据的能力,它能让你创造新的形式。
概念:数据结构就是一种数据类型,可以建立不同的数据类型组合。
定义:
可以用一个步骤定义结构体,也可以用结构体标记分两步定义。 结构体三种定义方式:
1. 推荐使用这种 struct XXXX{ 成员, 成员, ..... ..... }; //定义新的数据类型 struct XXXX 变量名[,变量名,变量名[M]]; 2. struct XXXX{ 成员, 成员, ..... ..... } 变量名[,变量名]; //定义新的数据类型 3. struct {//省略数据类型名称 成员, 成员, ..... ..... } 变量名[,变量名]; //定义新的数据类型,不建议使用
初始化: 结构体初始化的方式: struct stu { int num; char name[20]; int score; }; 第一种: struct stu a = { 001, "xiaowang", 80, }; 第二种(指定初始化项目): 建议使用: struct stu a = { .name ="xiaowang", .num =1, .score =90, //最后一个逗号可要可不要,一般写上 }; 结构体数组初始化的方式: 1. struct stu a[2] = { {1001,”LiLi”,85}, {1002,”wang”,90}, };
2. struct stu a[2]={ [0].num = 1, [0].name = "xiaowang", //char name[20]="xiaowang"; //char name[20]; name="xiaowang";错误 [0].score = 80, [1].num = 2, [1].name = "xiaocui", [1].score = 90,
}; //以下书写方式,不建议使用 struct student { int num; char name[20]; int score; }st={1001,”wang”,95}; struct student { int num; char name[20]; int score; }st[2]= { {1001,”LiLi”,85}, {1002,”wang”,90}, }; 赋值: 方法:变量名.成员名,来直接操作其中成员变量 struct stu { int num; char name[20]; int score; }; struct stu a; a.num = 0x0001; strcpy(a.name,"happygrilclh"); a.score = 100; 使用 //引用结构体成员时,其实际意义由成员本身决定
成员运算符 . 成员运算符和结构或联合名称一起使用,用来指定结构或联合的成员。 间接成员运算符 -> 间接成员运算符和指向结构或联合的指针一起使用,用来指明结构或联合的成员。
