一个数组初始化的问题 高手进

来源:百度知道 编辑:UC知道 时间:2024/06/06 00:59:08
在c或c++里 给数组赋值
int a[5] = {1,2,3,4,5};
没有问题 编译通过

而如下形式
int a[5];
a[5] = {1,2,3,4,5};则通不过

请问
int a[5];
然后
什么 = {1,2,3,4,5};可以通过?

int a[5] = {1,2,3,4,5}; 这是静态初始化
你所谓的 int a[5]; a[5] = {1,2,3,4,5}; 是动态初始化
应该这样: a[0]=1(或表达式); a[1]到a[4]是一样的

那是C的规定.C规定只能在数组初定义的时候才能给整个数组赋初值,否则,要一个元素一个元素地赋值.说白了,在定义一个数组a[n]时,C会认为a[n]是一个数组,而之后出现的a[x](那怕x=n)C都认为只是数组的一个元素.这样就好理解了,int a[5];/*此时是一个数组*/
a[5]=.../*此时是一个元素,一个元素不可以接收多个值,系统报错*/