数组初始化有关问题,非常不科学的现象!
数组初始化问题,非常不科学的现象!!
我非常疑惑的一个问题:
unsigned short Arry[256] = {2047};
这样定义数组 Arry 并初始化,想将所有元素都初始化为 2047,可是,结果却是第一个元素为 2047,其余的所有元素都是 0, 这不科学!!
谁帮我解释一下!
------解决方案--------------------
其实这个问题,即使是有经验的程序员也容易犯,本人曾经犯过这个错。
以前一直以为 int a[256]={0};是把a的所有元素初始化为0,int a[256]={2047};是把a所有的元素初始化为2047. 其实不是这样的。如果初始化时指定的的元素个数比数组大小少,剩下的元素都回被初始化为 0。例如
int Arry[8]={1,2,3,4};
那么等效的是
int Arry[8]={1,2,3,4,0,0,0,0};
我非常疑惑的一个问题:
unsigned short Arry[256] = {2047};
这样定义数组 Arry 并初始化,想将所有元素都初始化为 2047,可是,结果却是第一个元素为 2047,其余的所有元素都是 0, 这不科学!!
谁帮我解释一下!
------解决方案--------------------
其实这个问题,即使是有经验的程序员也容易犯,本人曾经犯过这个错。
以前一直以为 int a[256]={0};是把a的所有元素初始化为0,int a[256]={2047};是把a所有的元素初始化为2047. 其实不是这样的。如果初始化时指定的的元素个数比数组大小少,剩下的元素都回被初始化为 0。例如
int Arry[8]={1,2,3,4};
那么等效的是
int Arry[8]={1,2,3,4,0,0,0,0};