C语言数组问题

[复制链接]
查看11 | 回复4 | 2008-9-9 00:06:02 | 显示全部楼层 |阅读模式
二维数组
int a[2][2]={{1},2,3}
问题:
为什么2,3没有用花括号
不是应该是a[2][2]={{},{},{}}这种格式才对么?
还有
int a[][2]={1,2,3,4}
这个也没有花括号?
这种格式是什么意思?

回复

使用道具 举报

千问 | 2008-9-9 00:06:02 | 显示全部楼层
一维数组初始化的形式为 int a[2] = {1, 2};二维数组就相当于两个一维数组,其初始化的形式为 int a[2][2] = {{1, 2},{3, 4}}; //{}内有两个一维数组 而你说的a[2][2]={{},{},{}},相当于三维数组了,写为a[3][2]={{},{},{}}才可以! 也可以用int a[2][2] = {1, 2, 3, 4}的形式,让编译器自动帮你分开,但是这样赋值比较容易出错,容易多写或漏写!当你少写时,如int a[2][2] = {1,2}; 编译器自动分成{{1, 2},{0, 0}},它会将前面的先填上,缺了的补0!...
回复

使用道具 举报

千问 | 2008-9-9 00:06:02 | 显示全部楼层
C语言规定:定义二维数组时,可以通过赋值省略定义第一维下标,当任何时个不能省略第二维下标,比如:int a[ ][2]]={{1},2,3,4};赋值过程中1赋给第一维,第一维中还有一个a[0][1]元素未给定义,默认赋给0;把2,3赋给第二维,第二维赋满,把4赋给第3维;...
回复

使用道具 举报

千问 | 2008-9-9 00:06:02 | 显示全部楼层
int a[2][2]={{1},2,3};表示定义一个2行2列的数组,用{}表示按行赋值,因为有2列所以{1}表示第一行为1,0;int a[][2]={1,2,3,4},表示按数据在内存中的地址赋值,行数可省略但是 列数绝不可以略。因为赋值为 4个数所以 系统判定行数是2.如果有五个元素 系统会将行数定位三。...
回复

使用道具 举报

千问 | 2008-9-9 00:06:02 | 显示全部楼层
int a[2][2]={{1},2,3} 如果要定义一个2行2列的数组,只对其中一部分赋值,一定要用以上的形式,他所表示的是第1行为1,0(和一维数组一样不完全赋值其余补0),第2行为2,3。 如果对所有元素赋值则可以用int a[2][2]={{1,2},{3,4}},或者int a[2][2]={1,2,3,4}他们是等价的。 int ...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行