当前位置:首页 > 行业动态 > 正文

c语言里面的结构体

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; //

0