2013-11-22 19 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;