数组小问题
来源:百度知道 编辑:UC知道 时间:2024/07/02 11:13:01
但是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]才正确