前言
sizeof函數用于獲取數據類型或變量在內存中所占的字節數。
sizeof函數返回的是編譯時確定的值,不會計算動態分配的內存大小。
sizeof函數可以用于多種類型的數據,包括數組、指針、結構體、枚舉等。
1.數組
int arr[5];printf("%zu ", sizeof(arr));// 輸出20。因為數組占20個字節。printf("%zu ", sizeof(arr[0]));//輸出4。因為數組類型為int,占4個字節printf("%zu", sizeof(arr) / sizeof(arr[0]));//輸出5。因為數組長度為5
2.指針
對于指向對象的指針,sizeof函數返回的是指針類型的大小,而不是所指對象的大小。
int* ptr;printf("%zu",sizeof(ptr));// 輸出8,因為指針類型占8個字節(在64位系統下),不論指向何種數據類型
3.結構體
struct Person {char name[20];int age;
};
struct Person person;
int size = sizeof(person);
// 返回24,因為name數組占用20個字節,age變量占用4個字節,總共占用24個字節
4.枚舉?
enum Color { RED, GREEN, BLUE };
int size = sizeof(enum Color); // 返回4,因為枚舉類型通常占用4個字節