tag 标签: c语言、struct、union

相关博文
  • 热度 9
    2012-9-14 17:06
    1559 次阅读|
    0 个评论
    1.在C++中,struct与class一般可以通用。Struct默认属性为public,而class默认属性为private。所以在C++中struct中可以包含函数,而在C中,函数不能作为struct的成员,如下: Struct.C中编译出错,struct.cpp中没有出错。 struct stu {     int i;     void TestFunc(void); }; void main() {     struct stu stStudents;     while(1); } 2.union主要用来压缩空间,特点是所有成员共用存储空间。如果一些数据不可能在同一时间同时被使用到,可以使用union共用体来压缩空间。 3.存储模式:大端模式和小端模式。 大端模式:字数据的高字节存储在低地址中,低字节存储在高地址中。 小端模式:字数据的高字节存储在高地址中,低字节存储在低地址中。 4.enum枚举类型:枚举类型中的数据成员为常量,所以一般在定义时大写,分隔用的是逗号而不是分号,使用里面的数据时,直接用,比如下面的GREEN,而不能用ColorVal.GREEN。 eg:枚举类型 enum Color {     GREEN=1,     RED,     BLUE,     GREEN_RED=10,     GREEN_BLUE }ColorVal; printf("\n%d",sizeof(GREEN));和printf("\n%d",sizeof(ColorVal));结果都为4。这是为什么呢?只计算了里面的一个数据的长度。 5.typedef取的别名不支持类型扩展 eg: typedef int int32; unsigned int32 i=10;//错误,不能这样扩展类型 int32 i=10;//正确 6.在C编译器中,会将注释剔除,用空格来代替原来的注释。编译器只要看到/*就会把它当成一段注释的开始。编译器从左往右找符号,找到第一个符号后会继续往右找,如果连着的符号刚好组成一个符号就会把它当成一个整体。 7.右移(),对于有符号数,右移时符号位将随同移动,当为正数时,最高位补0,为负数时,补0还是补1取决于编译系统规定,但多数为补1。