空结构体大小为1字节。关于这点的理解如下,假如定义了一个空结构体变量并取其地址,值为多少?如果大小为0那就不会分配内存空间变得没有地址可取,所以编译器对此的实现是空结构体也占1字节的空间。
同类型结构体可以整体赋值。(忌讳的是有成员类型是指针变量,处理不好相互影响结果)
结构体当函数参数时,外部传入的结构体内容全部拷贝到形参栈空间。
大写字母转小写 ch = ch | (‘a’-‘A’);
小写字母转大写ch = ch & ~(‘a’-‘A’);
共用体(也有翻译叫联合体)关键字union,语法定义类同struct。共用体所有成员共享使用同一段内存,成员名是解释此段内存的代号。手动实现就是强转指针类型取内容,而共用体是编译器对此实现提供了一种简易方式,同时也增加了可读性。
枚举关键字enum,成员间用逗号分隔,每个成员都是一个常量值。默认的如果不指定成员值,编译将第一个成员定义为0,后面的成员累加1,如果有成员数值被显示指定,那么后面没有指定的成员在指定值的基础上累加1。
枚举与宏不同的一点,枚举类型限制符号化常量的范围,其值只能取定义者之一。
双冒号(::)作用域符。
复合类型中嵌套复合类型,一般在有3种用途:
一、 分类管理。(典型的在一个结构体中定义多少子结构体类型)
二、 避免重名。(被嵌套复合类型,裹了上一层的作用域)
三、 类型私有。(被嵌套的复合类型不定义名称,就等于私有使用了)