# 结构体
struct person {
}
# 结构体
struct person {
}
总结:
1、
如果,想表示一个人,怎么定义?要表示的变量特别多,有年龄,名字,身高等等;
有一个特殊的“类型”——结构体类型!——
struct person {
char name[20]
int age;
char gender;
float height;
}
2、
类型和变量如何区分?
2.1、一个类型可以声明很多相同类型的变量;
2.2、struct person 代表的是一个类型;而person本身不是一个类型
3、
计算机会以当前结构体中的最大类型,最为开辟空间的对齐标准。最大类型为多少字节,每次就开辟多少字节;
struct node1{
char a;
char b;
int c;
}
struct node1{
char a;
int c;
char b;
}
第一种:| a | b | _ | _ | c | c | c | c |——总占据8字节;
第二种:| a | _ | _ | _ | c | c | c | c | b | _ | _ | _ |——总占据12个字节,因为开辟了4字节放了一个char后,放不下int,所以新开了4个字节放int,因此就空了3个字节;
因此,对于相同字节,要放在一起定义,减少开辟空间的“大小”
4、
struct node1 {}后,
在C++中,可以用node1 a去定义一个变量,因为对于C++,它是一个类;
而在C语言中是一个类型,因此在C语言中,得这么写 struct node1 a;
5、
直接访问,a就是它所定义的变量,再去访问a中的字段,就是直接访问,例如:a.b,访问了一个char类型的变量。
间接访问,*a代表我定义了指向struct node1类型的指针变量(还是指向该结构体类型的首地址吗?例如数组的首地址),这就是间接访问。