软讯网络 > 编程语言 > C/C++ > about struct
【标 题】:about struct
【关键字】:
about,struct
【来 源】:http://www.cublog.cn/u/1421/showart.php?id=180666
about struct
struct是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,
也可以是一些复合数据类型(如array、struct、union等)的数据单元。对于结构体,编译器会自动进行成员变量的对齐,以提高运算效率。缺省
情况下,编译器为结构体的每个成员按其自然对界(natural
alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。
自然对界(natural alignment)即默认对齐方式,是指按结构体的成员中size最大的成员对齐。
一般地,可以通过下面的方法来改变缺省的对界条件:
· 使用伪指令#pragma pack (n),编译器将按照n个字节对齐;
· 使用伪指令#pragma pack (),取消自定义字节对齐方式。
注意:如果#pragma pack (n)中指定的n大于结构体中最大成员的size,则其不起作用,结构体仍然按照size最大的成员进行对界。
在C++语言中struct具有了“类” 的功能,其与关键字class的区别在于struct中成员变量和函数的默认访问权限为public,而class的为private。
C++中的struct保持了对C中struct的全面兼容,即struct可以在定义的时候直接以{ }对其成员变量赋初值,而class则不能。
C中的struct不可以含有成员函数,而C++中的struct可以。C++中struct定义的类型在声明变量时不必再写出struct关键字。