C语言中的二维数组的实际长度与给定长度
我写了个关于二位数组的小实验。如下:
#include <stdio.h>
void main(){
char a[][3]= {"nihao1","buhao","dajie"};
printf("%s %s %s \n",a[0],a[1],a[2);
}
编译通过的结果如下:
nihbuhdaj buhdaj daj
为什么不是
nihao1 buhao dajie
本人感觉是因为长度我规定的是3.但是为什么a[0] 是nihbuhdaj,a[1]、 a[2] 逐级递减
如果我把第二个长度规定为20,即a[][20],实际输出的结果就是nihao1 buhao dajie
这其中原因是为什么呢