sizeof

剛剛在查資料,剛好看到前幾天遇到一個我不會的題目
把程式丟給 gcc 編譯後執行,發現我完全寫錯了…..

題目如下:

int main ()
{
    int a;
    int *b;
    char c;
    char *d;
    char e[100];
    char *f[100];
    char g[7][8];
    char *h[7][8];
 
    printf("%d, %d, %d, %d, %d, %d, %d, %d",
    sizeof(a), sizeof(b), sizeof(c), sizeof(d), sizeof(e), sizeof(f), sizeof(g), sizeof(h));
}

在 32 位元機器的情況下,答案應該是 4, 4, 1, 4, 100, 400, 56, 224
因為 sizeof 是求 compile time 時得到的記憶體空間(in byte), 可是當時我一直想成陣列會給陣列大小, 陣列指標跟二維陣列以上的情況我就 confuse 了, 這題好像是在趨勢遇到的吧..

爆炸!!

Leave a Reply