- struct 结构体名
{成员}变量;其中 . 叫成员分量运算符
- 结构体数组定义,花括号和逗号{{,,…},{,,…}}
- 占内存长度为各成员占内存长度之和
- 结构体指针:(*p).num等价于p->num等价于变量.成员。注意p->n++和++p->n,先用再加和先指向,自加,再用
- 指向结构体数组:p=stu,p指向第一个元素,p+1指向第二个元素,(++p)->num即p先指向下一个元素(相当于数组名+1)再得到指向的成员值
- void print(struct student *)结构体指针作形参
- 静态链表:结构体中定义成员struct xxx *next,使head=第一个结点的地址,依次指向后,使p=head,最后一个结点的next->NULL,用p=p->next来指向下一结点
- 动态链表:
malloc(size),分配一个长度为size的连续空间,返回一个void指针
calloc(n,size)分配n个长度为size的连续空间
以上两个分配不成功返回NULL
free(*p)释放p指向的动态储存区
- 将struct换成union即共用体,几个变量共占同一段内存,占内存长度等于最长的成员长度
- 共用体变量中只有最后一次存放的成员,可以用于对立的一些数据存储,节省空间
- 不能作为函数参数,函数不能传递共用体变量,可以使用指向共用体变量的指针
- 枚举enum
- enum xxx{aaa,bbb,…},系统为其赋值0,1,2…,aaa,bbb等叫做枚举常量(枚举元素)。也可在花括号里定义aaa=7,则bbb=2依次不变
- enum xxx p定义一个枚举变量p
- 可将枚举常量赋值给p,输出p可得常数。不能直接p=2,要加强制转换p=(enum xxx)2,则p=bbb
- typedef+类型+指定名,于是可以用指定名代替该类型去定义
- typedef int ARRAY[10];ARRAY a意思是a是一个长度为十的一维数组
便于程序的通用和移植,对于字节数不同的机器只需修改typedef后类型即可