C语言难点3之结构,联合和指针
C语言难点3之结构,联合和指针
1 结构声明
struct tag {menber list } varible-list
注意到这两个声明被编译器当做两种截然不同的类型,即使是他们的成员列表完全相同。
2 结构成员
结构成员可以是指针,标量,数组,结构体
3 结构体的访问
直接访问:结构变量的成员是通过.操作符访问的。
间接访问:使用指向结构的指针间接访问。对指针执行间接访问将访问结构,然后点操作符访问一个成员。
但是对于简介访问还可以使用箭头操作符访问。
4 结构的自引用
在自引用中注意:
5 不完整的声明
就是结构体的嵌套
6 结构体的初始化
结构体的初始化和数组的初始化很相似
7 对结构体的复杂访问
有很多,可以借助图来分析,详细见教材。
8 结构的存储分配
结构的存储于机器的整型长度有关,
9 作为函数参数的结构
作为函数参数的结构一般有两种办法,一是吧结构体作为参数进行传递,另一种是把指向结构体的指针作为参数进行传递,一般来说,把指向结构体的指针作为参数进行传递的效果要比吧结构体作为参数进行传递的效果要好。
例如:
把结构体作为参数进行传递
然而:
把指向结构体的指针作为参数进行传递
10 位段
结构可以实现位段,位段的声明和结构类似,但是他的成员是一个或多个位的字段。这些不同长度的字段实际上存储于一个或多个整形变量中。
11 联合
联合的所有成员引用的是内存中的相同位置
那么联合体如何初始化呢?
12 总结
这一部分对结构,联合等部分做了一些易错点描述,可能做的不够详细,但是基本上的重点和易错点都有涉及。