为什么二维数组可以省略行
答:按行连续初始化int a[2][3]={5,6,7,8,9,10};二维数组初始化中,可以省略行,但不能省略列 a选项,省略行列,错误 b选项,省略行列,错误 c选项, int a[2][3]为 2行3列, int a[2][3] = {{1,2},{3,4},{5,6}};初始化数据为3行2列,错误 D选项正确,二维数组初始化,...
答:如果省略第一维大小,则必须给出初值表,编译器才能根据初值表确定第一维的最小长度。如果既没有第一维长度又没有初值表,将导致编译错误。将二维数组当作参数的时候,必须指明所有维数大小或者省略第一维的,但是不能省略第二维或者更高维的大小,这是由编译器原理限制的。因此,可以省略第一维的维数...
答:如果全部元素的初值都已提供,则数组的第一维长度可以不指定,但第二维长度不能省略。所以你的例子是错的 a[2][3]需要六个 a[3][3]需要九个 7不能被整除
答:二维数组定义时可以省略行数,系统会根据列数跟元素个数自动给行数赋值,D很明显是错的,行数是2,却有三个元素
答:二维数组必须指定列的数量,行的数量可以不定义即可以省略第一维的定义,但不能省略第二维的定义
答:二维数组在初始化时,可以根据列数,推算出行数,所以编译器可以正确的分配空间。而只有行数,是推不出列数的,无法进行内存分配,报错。例如float x[3][]={{1},{2},{3}};只知道是3行,至于列数,不知道,因为其他元素是可以不显式的初始化的。double y[][3]={0} 变成图 就是 0 0...
答:图5-6 二维数组的赋值 等价于:int a[3][4]={80,75,92,77,61,65,86,71,59,63,70,90};当为所有元素初始化时会自动按行赋值,因此可以省略区分行的{}。以上两种形式还可以进行简化,当所有元素有初值时可以省略第一维,即行号:int a[ ][4]={80,75,92,77,61,65,86,71,59,63,...
答:额,这是什么鬼;int a[][3]={{2,7,8},{2,3,4}};//你可以这样 int b[11][3]={{2,3,4},{2,3,4}};//也可以这样;int c[22][]={{2,3,4},{2,3,4}};//但是不可以这样;int d[][]={{2,3,4},{2,3,4}};//也不可以这样 总之初始化时,行长度可以省略,列...
答:您好,很高兴回答您的问题。二维数组在定义时是可以省略行这一维长度的。那么怎么知道数组有几行呢,就根据定义时的内层花括号来看。所以题目中就应该是三行三列的二维数组,那么a[2][0]就是第三行第一个元素所以结果就为2。以上就是我的回答,希望能帮助到您。
答:二维数组定义中,能够省略的是第一维的定义数,数组每行的数据元素总数必须指定,定义可以改为:int a[][2]={2,3,4};此时创建的是一个2行2列的数组,其中a[0][0],a[0][1],a[1][0]三个数据元素的内容分别是2,3,4 要弄清二维数组在内存的排列方式,这个问题就不难理解了。
网友评论:
离该15336082167:
为什么2维数组行可以省略 -
19628单琰
:[答案] 因为二维数组在初始化时,是按行进行赋值的,并且每行元素(最好)用大括号括起来.看个例子很好理解的!譬如定义a[2][3],可以由两种情况省略第一维的值.如下: a[][3]={{1,2}{1,2,3}},很明显行值是可以省的,因为不会造...
离该15336082167:
为什么2维数组行可以省略 -
19628单琰
: 因为二维数组在初始化时,是按行进行赋值的,copy并且每行元素(最好)用大括号括起来.看个例子很好理解的!!! 譬如定义a[2][3],可以由两种情况省略第一维的值.如下:a[][3]={{1,2}{1,2,3}},很明显行值是可以省的,因为不会造成歧义!!!注意:使用大括号括对每一行进行赋值的这zhidao种情况下,每一行也可以只对部分赋值. a [][3]={1,2,0,1,2,3},这种情况必须对每一个元素赋值,但当元素个数多时不便使用,推荐第一种!!!
离该15336082167:
在定义函数的时候,如果参数是二维数组,为什么可以省掉一维的部分?不太明白 -
19628单琰
: 比如 int a[][3]={ {1,2,3},{4,5,6},{7,8,9} }; 你就是在告诉编译器,这个数组中三个数是一组,我懒得数有几组了,你帮我数一下吧 结果与写int a[3][3]={ {1,2,3},{4,5,6},{7,8,9} };是一样的 省掉的部分由编译器自动帮你填上了而已.在函数中只需要定义第二维的尺寸,让程序知道在增加第1维的下标值时,要跳过多少字节的存储器即可
离该15336082167:
c语言中一维数组为什么一定要对长度定义,不能自动补0而二维数组就可以没有行数长度,自动补0呢? -
19628单琰
: 首先要明确数组的在计算机的分配方式.计算机会分配一块《连续》的内存给数组来使用,这样就可以通过《下标》很方便的访问数组的元素.因此数组的长度就一定是要固定的,因为内存是一直在动态的分配和释放的,如果数组的长度不固定...
离该15336082167:
在编程的时候,三维和三维以上的数组主要用来干什么?原理是什么? -
19628单琰
: 二维数组a[ ][3],表示该数组有几行3列,行被省略了,但是知道有3列,你这个表述好像有错误,应该是在赋值时可以省略,应该是inta[ ][3]={ {003},{2,4},{567} } 像这样就可以省略行了,系统就知道是3行,3列0,0,30,2,45,6,7(2)当你用到该数组时,你肯定会定义它的内容把,因为在C语言中,数组都是先定义后使用的,一旦定义了,数组的类型和长度都确定了,所以在后面的使用中是不能更改的,而变量是没有确定的量,可以更改,所以数组大小不能是变量.
离该15336082167:
c中为什么二维数组的行数组不用定义 -
19628单琰
: 这是语法的问题吧,一般第一个数据组下标可以不用定义,一维数组也是可以不用定义的,编译的时候会根据初始化的内容多少初始化数组个数,当然这要是在定义的数组的时候一起初始化.所以一般要获取这个数组的个数可以用sizeof(v)/sizeof(v[0])来获得.
离该15336082167:
定义二维数组为什么可以省略第一维的长度,但却不能省略第二维的长度啊? -
19628单琰
: 有初始化的时候,第二维的数字代表分配内存的长度,第一维的数字代表分配内存倍数; 倍数可以让机器去数,但长度没有的话就不好开辟空间了.
离该15336082167:
如果用二维数组做函数形参,为什么可以省略第一个下标
19628单琰
: 没有为什么,这种就是语法所规定的,虽然具体的数组长度可以在赋值的时候决定,但数组本身在默认赋值的时候是一行行依次保存的,只有满了一行才会保存到下一行 如果你在声明时候不给个准确的每行可以保存的个数,程序是不知道什么时候“换行”的,也就是必须要有第二个下标的原因
离该15336082167:
二维数组第二维的长度任何情况下都不可以省吗? -
19628单琰
: 当然不能省略,因为二维数组是由若干个一维数组组成的,在内存中数组是按行存放的,因此,在定义二维数组时必须指定列数.
离该15336082167:
二维数组做函数参数时为什么二维的大小不能省,二一维的可以省 -
19628单琰
: c++其实没有二维数组,它就是数组的数组.二维数组是这样组成的a[2],你把a[0]放一个数组,a[1]放一个数组就组成了二维数组.但是它数据还是按顺序排列的. 所以当你的数据存好后,编译器必须得知道你的行或列.才能知道你的内存对应...