c语言 8 结构体
结构体
结构体,结构体是将多个基本类型组合起来,组建成一个新的自定义类型。
C/C++中,存在一些基本类型,char/int/short,,,,但 他们不够用,不足以应对更多的现实问题,于是将一些基本类型组合起来,形成一个新的自定义类型,就是结构体
1.1
1.1肯定是如何创建一个结构体了,创建出来,我们再学习如何使用它。
struct
2 基本用法
2.1 初始化
注意花括号末尾加分号结束
各个成员初始值要与该成员类型匹配
各个初始值以逗号分开,最后一个成员后边不需要加逗号
初始化顺序与成员变量顺序一致
初始化的时候要注意,最好每个结构体成员初始化的时候用花括号把初始化值括起来
举个初始化出偏差的栗子
这个,初始化的时候,没有加花括号,结构体第一个成员是一个名为name的int型数组,这个时候就直接把三个元素都读取到name数组中去了
下边是个恰当点的写法
加了花括号,就不怕它识别错误了
3 定义结构体数组
前边学习了整型数组,char型数组,字符串数组
作为一种变量类型,同样可以定义结构体数组的
结构体数组, 它是一个数组,数组成员类型是结构体
举个例子
4 结构体的内存视图
照抄书上的话, 结构体就是将多个基本类型组合起来,从内存视图来看,一个结构体变量在内存里相当于多个基本类型变量的组合。
4.1 结构体成员
就是结构体里头定义的各个成员
4.2 对齐和填充
这里讲的是内存对齐
为什么要求内存对齐,根据cpu指令要求的,只能在对齐的地址上存取,属于指令集的语法要求,但不是所有cpu都如此限制。
内存对齐就是,依照最大类型的结构体成员类型,比如最大结构体成员是int 就是int 4 内存地址能被4(类型最大成员的类型大小)
简单。
5 其他用法,
5.1 结构体的赋值,
这个简单
int a=29;
int b;
b=a; // 把a的值赋给a;
struct kisss;
{
嘟嘟嘟
};
kiss a={ 嘟嘟嘟嘟}‘
kiss b;
b=a; // 把结构体类型a的变量赋给b
5.2 结构体指针
栗子
6 结构体特殊写法
可以只定义一个结构体变量,并不为这个结构体定义一个类型名字,
代码这样
6.2 可以在函数内部定义一个结构体,但这样定义的结构体就只在函数内部有效。
一般来说,都定义在函数外边,整成全局。因为struct语法的初衷是定义一个被多出使用的自定义类型。
6.3命名规则,和前边一样,数字字母下划线嘟嘟嘟U度。’
7 传值和传址
这个很重要,
比如下边
int a=20;
int b ;
要把a的值赋给b 可以直接赋值
这样的 b=a; 传值得方式 这就是,
然后是传址的方式
int a=20;
int* b=&a;
相对来说传址更加高效,因为内存中空间很小,传值需要把变量整个值都挪一下,传址只需要把地址交出去,需要的时候按照地址去访问就好了。就好比在厕所六号坑,算了 举个正经点的栗子。
比如,你们宿舍有个打印机,隔壁楼的兄弟需要用,你直接把打印机给他抗过去,这就是传值,
把你们宿舍门牌号给隔壁兄弟,他需要的时候自己去你宿舍用,这就是传址
这个比喻大概意思对了,但不贴切,
然后结束 下一个