c语言数组,比如字符数组,定义有点疑惑,还有输出

char a[2014]={'a','d'};//这样没问题 char a[2014];a[2014]={'a','d'};//这样会报错,它说a[2014]={'a','d'};这行[Error] expected expression before '{' token,这里有缺失{吗,我不懂 还有如果我char a[2014]={'a','d'}; printf("%c %c",a,a[0]); //为什么第一个输出的不是a 最后想问一下我这样定义char a[2014],那么a[0],a[1]等这些里面都是只装一个字符的吗 一共三个问题,求解

第1个回答  2019-06-10
第一个问题:char
a[2014]={'a','d'};//这里是对a的初始化。
而你char
a[2014];a[2014]={'a','d'};//这里共有两条语句,第一条是定义了字符数组,第二条是给第2015个元素赋值,这里a总共就2014个元素,所以赋值是不可取的,我知道你这里是给a数组的所有元素赋值,这里需要用for循环,否则你这么写是给越界了的数组的第2015个元素赋值,而且赋值的值也不正确。
第二个问题:你char
a[2014],a代表字符数组的地址,不代表第一个元素,所以不是a。
第三个问题:只能装一个字符,因为是char,char只有一个字节,就只能装一个字符。