黑马程序员技术交流社区
标题:
二维数组问题
[打印本页]
作者:
a1130003724
时间:
2014-5-22 19:02
标题:
二维数组问题
列如对数组a[5][3] 初始化
按行分段赋值可写为 int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}}
按行连续赋值可写为 int a[5][3]={80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};
这样赋值了以后a[0][0]是等于80还是a[0][0]变成了a[8][0] 还有就是如果赋值的只是一位数可不可以呢?比如把80换成8这样可以不?请教各位大神 一维数组都还好懂 到了二维 就有好多问题了
作者:
forever决
时间:
2014-5-22 19:34
本帖最后由 forever决 于 2014-5-22 19:37 编辑
首先a[0][0]表示第0行第0列的元素,就是80,其次二维数组的初始化的赋值是一行一行的赋满以后如果还有空余的空间就补0,最后在int型数组里,在vc++环境下每个元素占四个字节(tc占两个字节,具体的差C语言的书都有),也即是说只要整数在(-2)∧31~(2∧31)-1之间都是合理的,希望能对你有帮助
作者:
huangqiwa
时间:
2014-5-22 19:42
楼主可以通过敲打代码来测试这2种赋值方法是不是有区别
#include<stdio.h>
#include<stdlib.h>
int main()
{
//int a[5][3]={80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};
int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};
for(int i=0;i<5;i++)
{
for(int j=0;j<3;j++)
{
printf("%d",name[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
复制代码
另外楼主所说的“这样赋值了以后a[0][0]是等于80还是a[0][0]变成了a[8][0” 这个是不会发生的,因为你的二维数组最大只能a[5][0],即便你怎么复制也不可能是a[8][0]的!知道吗?因为你int a[5][3] 的时候已经确定了这个二维数组的大小,所以赋值只能决定这个二维数组中的内容,不能改变这个二维数组的大小的!
作者:
yangying514
时间:
2014-5-22 22:35
当然是a[0][0]=80.赋值的只是一位数当然也可以,a[0][0]能等于80,当然也能等于8.
作者:
a1130003724
时间:
2014-5-23 00:48
forever决 发表于 2014-5-22 19:34
首先a[0][0]表示第0行第0列的元素,就是80,其次二维数组的初始化的赋值是一行一行的赋满以后如果还有空余 ...
其次二维数组的初始化的赋值是一行一行的赋满以后如果还有空余的空间就补0,这句话没大看懂能否举个例子具体说明下,还有就是只要整数在(-2)∧31~(2∧31)-1之间都是合理的,也没有懂 麻烦你在具体说明下 谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2