结构体变量是由不同数据类型组成的一个复合数据类型,它可以将多个数据项封装在一起,形成一个单独的实体。
例如,在一个学生信息管理系统中,可以使用结构体存储一个学生的姓名、学号、性别、年龄等多个信息,这些信息通过结构体变量统一存储,方便读取和修改。
结构体变量的定义使用关键字“struct”,格式为“struct 结构体名 { 成员列表 };”,其中成员列表是由多个变量名和类型组成的列表。
结构体变量的创建和普通变量类似,只需要在定义时指定结构体类型即可。
例如,定义一个名为“student”的学生结构体,可以使用以下代码:
struct student {
char name[20];
int number;
char gender;
int age;
};
然后创建一个名为“John”的学生结构体变量,并初始化其姓名、学号、性别和年龄:
struct student John = { "John", 1001, 'M', 20 };
结构体变量内部的成员可以使用“.”操作符进行访问,也可以使用“->”操作符进行访问。
“.”操作符用于访问普通结构体变量的成员,例如:
struct student John;
John.number = 1001;
“->”操作符用于访问指向结构体的指针变量的成员,例如:
struct student *p;
p = &John;
p->number = 1001;
结构体变量可以作为函数参数进行传递,可以使用“值传递”和“引用传递”两种方式。
值传递表示将结构体变量的副本作为参数传递给函数,函数在修改结构体变量时,实际上是修改了副本,而不是原始结构体变量。
引用传递表示将结构体变量的地址作为参数传递给函数,函数可以通过指针修改原始结构体变量。
例如,以下是一个将结构体变量作为函数参数的示例:
struct student {
char name[20];
int number;
char gender;
int age;
};
void print_student(struct student s) {
printf("Name: %s\n", s.name);
printf("Number: %d\n", s.number);
printf("Gender: %c\n", s.gender);
printf("Age: %d\n", s.age);
}
struct student John = { "John", 1001, 'M', 20 };
print_student(John);