结构体
关键字:struct
结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
比如描述学生,学生包含:名字+年龄+性别+学号这几项信息。这里只能使用结构体来描述了。
例:
//创建一个结构体类型
struct stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[15];//学号
};
//打印结构体信息
int main()
{
//利用结构体类型创建一个该类型的结构体变量
struct stu per = { "Sam",24,"男","120397" };
//如果结构体变量是非指针类型,访问结构体成员的格式如下:
//结构体变量名.成员名。"."为结构成员访问操作符
//printf("姓名: %s\n", per.name);//这句话的意思是访问per结构体变量的name成员
printf("name =%s age=%d sex=%s id=%s\n", per.name, per.age,per.sex, per.id);
per.age = 26;
printf("修改后的年龄: %d岁\n", per.age);
struct stu* pb = &per;//struct stu*这种指针类型定义了一个变量叫pb
利用pb打印出姓名和年龄
//printf("%s\n", (*pb).name);//这里(*pb)的()想加就加,不加也行
//printf("%d\n", (*pb).age);
//↑上述的操作符比较麻烦,这里开始讲一个新的更简洁的写法
printf("%s\n", pb->name);
printf("%d\n", pb->age);
return 0;
}
//. 结构体变量.成员
//-> 结构体指针->成员
例2:
//修改案例中的学生姓名
struct stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[15];//学号
};
int main()
{
//案例中年龄可以更改,因为它是一个变量,但名字name属于数组字符串(本质上是一个地址),不好直接更改
struct stu per = { "Sam",24,"男","120397" };
//printf("name =%s age=%d sex=%s id=%s\n", per.name, per.age, per.sex, per.id);
strcpy(per.name, "Seb");//strcpy - string copy - 字符串拷贝 - 库函数 - string.h
printf("%s\n", per.name);
return 0;
}