c数组声明初始化问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 11:08:26
请问在c中对数组的定义与初始化像下面这样为什么不可以呢?
int a[3];
a = {1, 3, 2};

int a[3];
a[] = {1, 3, 2};
只能是:
int a[3] = {1, 3, 2};
或int a[] = {1, 3, 2};
这两种形式么?谢谢!

a 是数组名,表示数组的首地址,是个常量,不能赋值,所以“a = {1, 3, 2};”是错误的。
[]是下标访问符,必须工有下标值,a[]是错误的,就算有下标,比如a[1]也不能将{1, 3, 2}赋给它。

常用的初始化有以下几种:
int a[5] = {1, 3, 2};①
int a[3] = {1, 3, 2};②
int a[] = {1, 3, 2};③
①只提供前三个元素的初始值,后两个采用默认初始值初始化,即分别为1,3,2,0,0。
②就不用说了。
③是②的简化,C语言规定当提供所有元素的初始值时,数组的长度可以省略。

对于编程语言来说,语法严谨是好事,既便于阅读,又不容易出错

Ms_yam 回答的好