结构、联合和枚举

结构、联合和枚举

l  所谓的抽象数据类型,应该只在源文件中看到细节才完美;

l  对于大工程而言,最好将函数原型和结构声明放在单独的头文件中;

l  在结构中,比较安全的定义方式是使用指针而不是数组;

l  不能使用==!=来比较结构是因为可能会遇到结构中没有使用的洞hole的随机内容而导致失败;

l  当结构作为函数参数传递的时候,通常会把整个结构都推进栈,需要多少空间就使用多少空间,正是为了避免这个代价,程序员经常使用指针而不是结构

l  为了广泛的可移植性,在读写文件的时候,最好使用二进制b选项;

l  正确地对齐是种编译器高效访问的策略;

l  将结构中的域按照从大到小的顺序排列可以最大限度地降低填充的影响;

l  结构为一级对象,而结构为二级对象,不能直接对结构进行赋值等;

l  在原来的ANSI C中,只有联合中的第一个成员可以被初始化,C99引入了指定初始式,可以用来初始化任意成员

l  联合无法跟踪到底是哪一个域在使用;

l  枚举的优点为:自动赋值;调试器在检验枚举变量时,可以显示符号值;它们服从数据块作用域规则。一个缺点是程序员不能控制这些非致命的警告,有些程序员则反感于无法控制枚举变量的大小;

l  位域冒号:指定二进制大小的方法只适用于结构和联合的成员;

位域是可以移植的;