指標預設初始化

2021-06-18 19:34:12 字數 864 閱讀 4785

大多數情況下指標變數在棧上分配記憶體,編譯器在分配變數的空間時只是簡單移動棧的指標,這樣在棧上宣告多個變數就來得很快速,進行一次棧指標的移動就可以了,而再讀寫記憶體意味著效率將會損失,並且初始化的內容很快就會被改變

其實變數和指標,編譯器都是平等對待的。vc中,全域性變數初始化為0,全域性指標初始化為null;區域性變數(包括指標變數)如果未顯式初始化,其值都是未定的。

c/c++ code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

int* a;//編譯器預設初始化為null

voidmain()

code]

但即便編譯器將全域性指標初始化為null,又有什麼用呢?如果不指向乙個有意義的位址,還是非常不安全的。

以下**能夠編譯通過,但執行時絕對會出錯。

[code=c/c++]int* a;

voidmain()

預設初始化

雖然保險的做法是對每個變數都顯示初始化,但是了解一下預設初始化的規則也是很有必要的。1.定義於任何函式體之外的變數被初始化為0。2.定義在函式體內部的區域性變數不會被預設初始化。所以,它的值是未定義的 這裡的 未定義 我的理解 變數所分配記憶體中的二進位制資料,分配時是什麼就是什麼,機器會按照變數的...

初始化 1 預設初始化 列表初始化

初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...

值初始化和預設初始化

引用 1 值初始化 顧名思義,就是用數值初始化變數。如果沒有給定乙個初始值,就會根據變數或類物件的型別提供乙個初始值。對於int型別其值初始化後的值為0。對於預設初始化內建型別變數來說 1 定義在函式體之外的變數是全域性變數,一般儲存在全域性區,儲存在全域性區的變數一般會執行值初始化。此時,其初始值...