C 中的指標初始化

2021-09-25 21:00:22 字數 678 閱讀 1498

c++中定義乙個指標的時候,例如

int *p。

可以認為定義了兩個內容,1:指標,2:指標的指向。需要對指標本身和指標的指向都進行初始化,既要初始化記憶體位址,也要定義記憶體中的內容。如果不進行指標的初始化,則記憶體位址隨機分配。格根據編譯器的不同,會出現警告或者報錯不同等級的問題,在編譯中也可能出現難以察覺的bug。

指標的初始化時等號左右兩端都必須是記憶體位址。例如

int a;

int *p;

p = &a;

同時,也可以在定義指標的時候就直接對指標初始化。

int a;

int *p = &a

這裡可以這麼理解:

int a;

int *(p=&a);

這樣的理解有些怪異,因此我一般傾向於這樣寫:

int* p = &a
但是肯定會面臨乙個問題,上面的a除了用作給指標p做初始化,沒有任何作用了,每次都要開闢乙個空間用來給指標初始化,這明顯不合理。所以指標初始化還有其他的方式:初始化為空指標和初始化為動態記憶體

int* p = null;

int* p = new double;

至於動態記憶體的用法則是另一篇的內容了

初始化指標

includeusing namespace std int main nullptr 是 c 新標準引入的特性,visual c 2010 編譯器支援它。過去已經使用0或 null 編譯器將用 0代替此巨集 來初始化指標,當然它們現在仍然可以使用。但是,使用 nullptr 初始化指標要好得多。因...

C 類指標初始化

上面 的 會列印 a c 類指標定義的時候沒有初始化的時候,居然可以安全的呼叫類內部的成員函式而不出錯。在網上查了一下 初始化為null的類指標可以安全的呼叫不涉及類成員變數的類成員函式而不出錯,但是如果類成員函式中呼叫了類成員變數則會出錯,既然賦值為null的情況都可以使用,那麼自然不初始化的類指...

C 類指標初始化

上面的 會列印 a c 類指標定義的時候沒有初始化的時候,居然可以安全的呼叫類內部的成員函式而不出錯。在網上查了一下 初始化為null的類指標可以安全的呼叫不涉及類成員變數的類成員函式而不出錯,但是如果類成員函式中呼叫了類成員變數則會出錯,既然賦值為null的情況都可以使用,那麼自然不初始化的類指標...