全局数组变量初始化疑问
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