C/C++結構體用法及其對齊原則
阿新 • • 發佈:2018-12-14
#include <iostream> using namespace std; /* ①結構體變數的首地址(比如結構體陣列就要考慮到結構體本身的地址)能夠被其最寬基本型別成員的大小所整除; ②結構體每個成員相對結構體首地址的偏移量(offset)都是該成員大小的整數倍,如有需要編譯器會在成員之間加上填充位元組; ③結構體的總大小為結構體最寬基本型別成員大小的整數倍,如有需要編譯器會在最末一個成員之後加上填充位元組。 */ struct A { char c1; int i1; short s1; double d1; }; int main() { cout << "sizeof(A)=" << sizeof(A) << endl;//輸出sizeof(A)=24,總共填充了9位元組 //結構體的值拷貝 A a1 = {'A',1,2,1.3}; A a2 = a1; cout << a2.c1 << "," << a2.s1 << "," << a2.i1 << "," << a2.d1 << endl; //結構體陣列 A arr[2] = { { 'B', 1, 2, 1.3 }, { 'C', 1, 2, 1.3 } }; cout << "sizeof(arr)=" << sizeof(arr) << endl;//輸出48 getchar(); return 0; }