sizeof 運算子
- 編譯期計算型別/變數/常值佔用的**位元組數**;
sizeof(int)、sizeof(var)、sizeof 10 皆合法;
- 回傳
size_t(無號整數),列印用 %zu。
記憶體位址概念
- 每個位元組有唯一編號(位址),以十六進位表示;
- 變數宣告時,系統分配連續位元組,**第一個位元組的位址即為變數位址**;
&var 取得位址,%p 列印。
一維陣列記憶體佈局
int a[5] = {10, 20, 30, 40, 50};
// 假設起始位址 0x1000,int 4 位元組
// a[0] @ 0x1000, a[1] @ 0x1004, a[2] @ 0x1008 ...
// 關鍵等價關係:
// a == &a[0] == (int*)0x1000
// a+i == &a[i]
// *(a+i) == a[i]
二維陣列記憶體佈局(行優先)
int b[2][3] = {{1,2,3}, {4,5,6}};
// 連續儲存:1,2,3,4,5,6
// b[0] 為第一行陣列,類型 int[3],位址同 &b[0][0]
// b[1] 為第二行陣列,位址同 &b[1][0]
// b == &b[0] == &b[0][0]
// b+1 == &b[1] == &b[1][0]
陣列初始化完整語法