首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

全局数组变量初始化疑问,该如何解决

2012-02-10 
全局数组变量初始化疑问staticunsignedinthello[10]{0}是只将第一个元素初始化为0,还是将所有的数组元素

全局数组变量初始化疑问
static   unsigned   int   hello[10]   =   {0};
是只将第一个元素初始化为0,还是将所有的数组元素初始化为0?
如果是将所有的数组元素初始化为0,那么这个过程是因为编译器将全局变量放到了系统初始化数据段,还是有代码去初始化这个数组为0?(指的就是unsigned   int  
hello[10]   =   {0};这句话!)

[解决办法]
是将所有元素初始化0
是由编译器完成
[解决办法]
由于是全局变量所以在编译后产生了一个全是0的快,在你的程序开始就赋值好了
[解决办法]
将所有元素初始化0,在程序开始就赋值好了

[解决办法]
static unsigned int hello[10] = {0};
--------------------------------------
实际上这个语句只是将第一个hello[0]赋为0,但是正如Kenmark(fenix)所说,全局变量在声明的时候会自动赋为0。
你也可以试一下这个:static unsigned int hello[10] = {1};
[解决办法]
这个是有数组初始话属性
{0, }第一个元素之后所有的自动初始化为0
[解决办法]
比如
static unsigned int hello[10] = {1, 2, 3};
前三个元素初始化为1,2,3,其余7个元素初始化为0
这个过程是由编译器将静态变量放到了系统初始化数据段中实现的,即
.data
_hello:
.long 1, 2, 3, 0, 0, 0, 0, 0, 0, 0

[解决办法]
是由编译器初始化的.
[解决办法]
第一个元素赋为0,其他的编译器初始化为0

热点排行