C 静态字符*buf=NULL
我是编程新手,我有一个关于C中静态变量的项目要做。我看到我们可以像这样声明一个静态变量:C 静态字符*buf=NULL,c,variables,static,C,Variables,Static,我是编程新手,我有一个关于C中静态变量的项目要做。我看到我们可以像这样声明一个静态变量: static char *buf = NULL 在末尾添加“=NULL”是怎么做的?它在编译时用NULL初始化该指针。否则其起始值未定义。将ptr初始化为零 同 static char *buf = 0; 对于静态变量,它只添加了一个文档组件:作者记录值显式设置为NULL 唯一的(内部)区别是,如果存在这样的概念 static char *buf; 将被放入.bss段(分别在“运行”时归零),
static char *buf = NULL
在末尾添加“=NULL”是怎么做的?它在编译时用
NULL
初始化该指针。否则其起始值未定义。将ptr初始化为零
同
static char *buf = 0;
对于
静态
变量,它只添加了一个文档组件:作者记录值显式设置为NULL
唯一的(内部)区别是,如果存在这样的概念
static char *buf;
将被放入.bss
段(分别在“运行”时归零),而
可能放入.data
(相应的变量可能与其他非零初始化变量一起初始化)
(“may”的意思是:编译器可以自由选择将其放入
.bss
,尽管进行了初始化,因为效果是一样的。)看起来您需要拿起一本书,开始阅读许多基本概念。@user2485710错误language@LightnessRacesinOrbit打开该页并阅读该页的标签tabs@user2485710:公平竞争,不适用于static
。它可能被放入.data
部分,但这取决于编译器。@haccks:是的<代码>静态s在执行任何其他初始化之前始终为零初始化。参考标准为C99 6.7.8/10。@LightnessRacesinOrbit;谢谢你的推荐。我不知道,谢谢,所以。。。当我声明static char*buff时,我不需要添加“=NULL”,对吗?@神秘陌生人你不需要,但是如果你想记录一些东西,这不会有什么坏处。
static char *buf = NULL;