作用: 创建一个新的数据类型, 可以卸载函数的内部或外部
结构:
//struct 结构体名字{
// 数据类型1 成员变量名1; // 数据类型2 成员变量名2; // ... // ... // 数据类型n 成员变量n; //};//结构体的命名规范:大驼峰法
//多个成员变量之间用分号;隔开 //结构体外层的大括号后面要加分号;// struct Student {
// short number;// char name[20];// char sex;// float score;// };//定义一个结构体变量
//struct 结构体名字 变量的名字 = {对应的每个成员变量的处置,用逗号隔开}; // struct Student student = {123, "Mike", 'F', 99.9}; //获取成员变量的值 //变量名.成员变量名(点语法) //student.number;// printf("%hd\n", student.number);
结构体的重命名
/*
写法一struct Rectangle { int lon; int width;};typedef struct Rectangle Rec; */ //写法二typedef struct Rectangle { int lon; int width; P dian;}R;
typedef struct Student {
short number; char name[20]; char sex; float score;}Stu;
结构体可以直接赋值
// struct Student stu1 = {1314, "guozong", 'M', 99.9};
// struct Student stu2 = {520, "qiaoming", 'M', 9.99};// struct Student stu3 = {0};// stu3 = stu1.score > stu2.score ? stu1 : stu2;
// printf("number = %hd sex = %c name = %s score = %.2f\n", stu3.number, stu3.sex, stu3.name, stu3.score);//结构体内存占用
//以最大成员变量类型所占空间为分配单位 //按结构体成员声明顺序自上而下分配 //注:分配空间不足以存储成员变量时,分配新的空间单位//结构体数组
// struct Student students[5] = {0}; Stu students[5] ={ {101, "aaa", 'f', 88.0}, {102, "bbb", 'm', 89.0}, {103, "ccc", 'f', 90.0}, {104, "ddd", 'm', 99.0}, {105, "eee", 'f', 97.0} }; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4 - i; j++) { if (students[j].score < students[j + 1].score) { Stu temp = students[j]; students[j] = students[j + 1]; students[j + 1] = temp; } } } for (int i = 0; i < 5; i++) { printf("num = %hd name = %s sex = %c score = %.1f\n", students[i].number, students[i].name, students[i].sex, students[i].score); }