2013-11-22 44 views
3

我新的編程和我有一個項目在C.做一下靜態變量,我已經看到了,我們可以宣佈這樣一個靜態變量:靜態字符* BUF = NULL

static char  *buf = NULL 

什麼它是否在最後添加「= NULL」?

+0

http://www.cplusplus.com/reference/cstddef/NULL /?kw = NULL – user2485710

+0

看起來你需要拿起一本書,並開始閱讀許多基本概念。 – Shahbaz

+0

@ user2485710錯誤的語言 –

回答

5

static變量的情況下,它增加了究竟只是一個documentatory組件:該值明確設置爲NULL筆者文檔。

唯一(內部)的區別在於,如果這樣的概念存在,

static char *buf; 

將投入的.bss段(分別是「在運行」將被歸零),而

static char *buf = NULL; 

可能會被放入.data(或者可能會與其他非零初始化變量一起初始化)。

(「可能」是指:編譯器可以自由選擇把它放到.bss儘管初始化,因爲效果是一樣的)

+1

它*可能*被放入'.data'部分,但是它取決於編譯器。 – zch

+0

這意味着我錯了?請給一些參考。 – haccks

+3

@haccks:是的。在執行任何其他初始化之前,「static」始終是零初始化的。參考標準是C99 6.7.8/10。 –

-3

它在編譯時將該指針初始化爲NULL。否則,其起始值是未定義的。

+2

不,沒有'static'。 – glglgl

-1

初始化PTR到zero 一樣

static char *buf = 0;