C语言结构体是一种用户自定义的数据类型,它可以将不同类型的数据组合在一起,结构体的使用可以提高程序的模块化程度,使得代码更加清晰、易于维护,本文将详细介绍C语言结构体的使用方法,包括定义结构体、声明结构体变量、访问结构体成员、结构体数组和结构体指针等。
1、定义结构体
要定义一个结构体,需要使用关键字struct
,后面跟结构体的名称和包含的成员变量,成员变量可以是任何数据类型,如整数、浮点数、字符等,定义结构体的一般形式如下:
struct 结构体名称 { 数据类型 成员变量1; 数据类型 成员变量2; ... };
定义一个表示学生信息的结构体:
struct Student { char name[20]; int age; float score; };
2、声明结构体变量
声明结构体变量时,需要使用关键字struct
和结构体名称,然后跟变量名,声明结构体变量的一般形式如下:
struct 结构体名称 变量名;
声明一个学生信息的结构体变量:
struct Student stu1;
3、访问结构体成员
要访问结构体变量的成员,需要使用.
运算符,给上面声明的学生信息变量stu1
赋值:
strcpy(stu1.name, "张三"); stu1.age = 20; stu1.score = 90.5;
4、结构体数组
可以声明一个结构体数组,数组中的每个元素都是结构体类型,声明结构体数组的一般形式如下:
struct 结构体名称 数组名[数组大小];
声明一个包含3个学生信息的结构体数组:
struct Student stuArray[3];
5、结构体指针
可以声明一个结构体指针,指向结构体的首地址,声明结构体指针的一般形式如下:
struct 结构体名称 *指针名;
声明一个指向学生信息的指针:
struct Student *pStu;
6、初始化结构体变量和数组
可以在声明时对结构体变量和数组进行初始化,声明并初始化一个学生信息的结构体数组:
struct Student stuArray[] = {{"李四", 22, 85}, {"王五", 21, 90}, {"赵六", 23, 95}};
7、使用指针访问结构体成员和数组元素
可以使用指针访问结构体成员和数组元素,给上面声明的学生信息指针pStu
赋值:
pStu>age = 20; // 访问指针指向的结构体的成员变量age,并赋值为20 pStu>score = 90.5; // 访问指针指向的结构体的成员变量score,并赋值为90.5
通过指针访问数组元素:
“`c pStu[i].age = i + 1; // 访问指针指向的结构体数组的第i个元素的member age,并赋值为i+1 }// pStu[i].score = i + 2; // 访问指针指向的结构体数组的第i个元素的member score,并赋值为i+2 }// for (int i = 0; i < sizeof(stuArray) / sizeof(struct Student); i++) { // 遍历结构体数组 pStu[i].age = i + 1; // 访问指针指向的结构体数组的第i个元素的member age,并赋值为i+1 pStu[i].score = i + 2; // 访问指针指向的结构体数组的第i个元素的member score,并赋值为i+2 }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// }// pStu[i].age = i + 1; // 访问指针指向的结构体数组的第i个元素的member age,并赋值为i+1 pStu[i].score = i + 2; // 访问指针指向的结构体数组的第i个元素的member score,并赋值为i+2 for (int i = 0; i < sizeof(stuArray) / sizeof(struct Student); i++) { // 遍历结构体数组 pStu[i].age = i + 1; // 访问指针指向的结构体数组的第i个元素的member age,并赋值为i+1 pStu[i].score = i + 2; // 访问指针指向的结构体数组的第i个元素的member score,并赋值为i+2 }// }// }// }// }// }// }// }// }// pStu[i].age = i + 1; // 访问指针指向的结构体数组的第i个元素的member age,并赋值为i+1 pStu[i].score = i + 2; // 访问指针指向的结构体数组的第i个元素的member score,并赋值为i+2 for (int i = 0; i < sizeof(stuArray) / sizeof(struct Student); i++) { // 遍历结构体数组 pStu[i].age = i + 1; // 访问指针指向的结构体数组的第i个元素的member age,并赋值为i+1 pStu[i].score = i + 2; // 访问指针指向的结构体数组的第i个元素的member score,并赋值为i+2 }// for (int i = 0; i < sizeof(stuArray) / sizeof(struct Student); i++) { // 遍历结构体数组 pStu[i].age = i + 1; // 访问指针指向的结构体数组的第i个元素的member age,并赋值为i+1 pStu[i].score = i + 2; // 访问指针指向的结构体数组的第i个元素的member score,并赋值为i+2 }// pStu[i].age = i + 1; // 访问指针指向的结构体数组的第i个元素的member age,并赋值为i+1 pStu[i].score = i + 2; // 访问指针指向的结构体数组的第i个元素的member score,并赋值为i+2 for (int i = 0; i < sizeof(stuArray) / sizeof(struct Student); i++) { // 遍历结构体数组 pStu[i].age = i + 1; // 访问指针指向的结构体数组的第i个元素的member age,并赋值为i+1 pStu[i].score = i + 2; //
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/379773.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复