A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a1130003724 中级黑马   /  2014-5-22 19:02  /  1604 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

列如对数组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这样可以不?请教各位大神   一维数组都还好懂  到了二维 就有好多问题了

点评

加油!  发表于 2014-5-22 23:19

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 forever决 于 2014-5-22 19:37 编辑

首先a[0][0]表示第0行第0列的元素,就是80,其次二维数组的初始化的赋值是一行一行的赋满以后如果还有空余的空间就补0,最后在int型数组里,在vc++环境下每个元素占四个字节(tc占两个字节,具体的差C语言的书都有),也即是说只要整数在(-2)∧31~(2∧31)-1之间都是合理的,希望能对你有帮助
回复 使用道具 举报
楼主可以通过敲打代码来测试这2种赋值方法是不是有区别
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main()
  4. {
  5.         //int a[5][3]={80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};
  6.         int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};
  7.    for(int i=0;i<5;i++)
  8.    {
  9.                 for(int j=0;j<3;j++)
  10.                 {
  11.                         printf("%d",name[i][j]);
  12.                 }
  13.                 printf("\n");
  14.    }
  15.           
  16.         system("pause");
  17.         return 0;
  18. }
复制代码


另外楼主所说的“这样赋值了以后a[0][0]是等于80还是a[0][0]变成了a[8][0” 这个是不会发生的,因为你的二维数组最大只能a[5][0],即便你怎么复制也不可能是a[8][0]的!知道吗?因为你int a[5][3] 的时候已经确定了这个二维数组的大小,所以赋值只能决定这个二维数组中的内容,不能改变这个二维数组的大小的!
回复 使用道具 举报
当然是a[0][0]=80.赋值的只是一位数当然也可以,a[0][0]能等于80,当然也能等于8.
回复 使用道具 举报
forever决 发表于 2014-5-22 19:34
首先a[0][0]表示第0行第0列的元素,就是80,其次二维数组的初始化的赋值是一行一行的赋满以后如果还有空余 ...

其次二维数组的初始化的赋值是一行一行的赋满以后如果还有空余的空间就补0,这句话没大看懂能否举个例子具体说明下,还有就是只要整数在(-2)∧31~(2∧31)-1之间都是合理的,也没有懂    麻烦你在具体说明下     谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马