数组小问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 11:13:01
为什么 char a[100] ="fsadfdsa";就可以?
但是char b[100][100];
b[0][100] = "fdsafsad";就不行了?

帅哥~~
char a[100] 是定义的一个1维字符数组,当然可以直接初始化

char b[100][100]是定义的一个2维数组,初始化要加括号,不然程序怎么知道你初始化的是2维数租中哪个1维量

char b[][]={{"fadfsadf"},{.....},{.....}....}

多看看书啦

- -!!!!
数组和指针的关系你应该再研究一下.
指针:一个普普通通的变量,但是它保存的是一个数,这个数是另外变量的地址(当然,也可以不行,比如: p = NULL);
数组:数组的名称,它是一个常量,比如:
char szName[100];
szName就是数组名,也是首地址,也是一个常量.
如果你在初始化初始化它的值是可以的,比如
char szName[100] = "CIW"; //正确的,szName[0] = C, szName[1] = I, ...

但是,如果你这样定义了:
char szName[100];
szName = "CIW";
这样的话,是错误的,因为szName是个常量,你知道常量不能在左边.
还有,"CIW"这个看起来很神秘,其实它是个地址.

如果你要正确赋值的话,可以这样:
char szName[100];
strcpy(szName, "CIW");

还有数组的下标是0 ~(数组大小 - 1);
但是你上面的程序不是这样的问题.

还有2唯数组初始化就像1楼的说的是一样的

你定义了数组的元素数为100,即为0~99,100时指第101个数据,超出了数组上限。

而且,改成b[0][99]的话,只是指一个字符,而不能赋给它一个字符串。

b[0][100] 这个表达是错误的吧? 因为二维数组的话,100*100, 那么最大应该是99, 所以这里应该写成b[0][99]才正确