1.什么是结构体
重点是不同的数据类型的变量的结合

可以理解结构体的数据类型就是struct,结构体名字person,具体赋值的,就是变量名称。结构体内部包含各类数据类型的变量数据集。
切记结构体里面的成员变量,尾部需要分号,不是逗号结尾。

2.如何使用结构体
定义与初始化结构体,

访问结构体的成员变量以及值的设定。

#include <stdio.h>
struct person{
char name[20];
int age;
char sex[10];
};
int main(void)
{
struct person a={"pepole",19,"man"};// 字符串不可以是单引号 ,C中字符串应该用双引号,单引号用于字符常量
printf("%s",a.name);//pepole
printf("\\r\\n");
printf("%d",a.age);//19
printf("\\r\\n");
printf("%s",a.sex);//man
return 0;
}
例子2:进行数组化的结构体操作,切记字符串不能直接复制给数组,需要strcpy函数赋值。
#include <stdio.h>
#include <string.h>
struct person{
char name[20];
int age;
char sex[10];
};
int main(void)
{
struct person b[2];
b[0].age=20;
//b[0].name="canse";//错误 字符串不能直接给数组赋值,得用strcpy
// b[0].sex='w'; //错误,字符串不能直接给数组赋值,得用strcpy
strcpy( b[0].name,"canse");
strcpy( b[0].sex,"w");
printf("%s",b[0].name);//canse
printf("\\r\\n");
printf("%d",b[0].age);//20
printf("\\r\\n");
printf("%s",b[0].sex);//w
return 0;
}
3.结构体与函数
使用结构体作为函数的入参。

4.结构体与指针
使用指针访问结构体的成员:
实际上,是将结构体的地址赋值给指针,此时有别于结构的成员变量是.来引用或赋值,需要用箭头:->.
同时指针想指向结构体,那么指针类型必须是struct 结构体名称 *指针名=&初始化。

-> 的优先级高于 ,因此 zhizhen->x.high 先执行,它取出 y.x.high 的值(例如 88),这是一个 int 类型的数据。
然后 * 运算符试图对这个 int 值进行解引用,但 int 不是指针,不能解引用。这会导致编译错误(如 invalid type argument of unary '')。
#include <stdio.h>
#include <string.h>
struct people{
int high;
int scope;
};
//切记,子结构体,必须定义在前面。
struct person{
char name[20];
int age;
char sex[10];
struct people x;
};
int main(void)
{
//char *zhizhen; 不对,必须是struct类型指针才行
//struct people xiaomin={88,99};
struct person y={"ccc",19,"man",{88,99}};
struct person *zhizhen=&y;// 取了地址
printf("%d",zhizhen->x.high);// 切记,指针结构体不需要再加*引用
printf("\\r\\n");
printf("%d",zhizhen->age); // 19
return 0;
}
5.结构体的嵌套




