根據C標準,這被認爲是定義這是C中的一個定義嗎?
int x;
因爲它聲明x和分配存儲空間。但這也是一個定義嗎?
int *x;
也就是說,聲明一個指針變量或數組變量是否分配存儲空間?我猜不是因爲我們必須使用malloc。
根據C標準,這被認爲是定義這是C中的一個定義嗎?
int x;
因爲它聲明x和分配存儲空間。但這也是一個定義嗎?
int *x;
也就是說,聲明一個指針變量或數組變量是否分配存儲空間?我猜不是因爲我們必須使用malloc。
int* x;
是一個定義。它分配存儲來存儲指針。它不會爲整數分配任何存儲空間 - 這就是爲什麼如果您不想指向現有變量(或其他內存位置)需要malloc
。
純聲明將類似extern int x;
或extern int* x;
,然後在不同的編譯單元中具有相應的定義。
int *x;
分配存儲。變量x
被分配的存儲等於sizeof(int *)
。它包含一個垃圾值,如果它位於塊範圍,或者包含一個空值指針,如果它位於文件範圍。
它最初包含垃圾,如果它在塊範圍。如果它在文件範圍內,它最初包含一個空指針值。 –
@KeithThompson謝謝! –
用T替換類型('int *'),所以..'T x':這是否被認爲是一個定義? – user2864740
在這兩種情況下,都會分配一個對象。在第二種情況下,該對象恰好是一個指針。 –
與之前的數千人一樣,你需要學習區分指向他們指向的東西的指針。指針的存儲也是存儲。指針本身就是數據,不管它是否被用來訪問更多的數據。 – delnan