c语言中为什么二维数组的第一维长度可以忽略,第二维不能?

如题所述

第1个回答  2015-09-07
有初始化的时候,第二维的数字代表分配内存的长度,第一维的数字代表分配内存倍数;
倍数可以让机器去数,但长度没有的话就不好开辟空间了。本回答被网友采纳

int d[3][]={{1,2},{1,2,3},{1,2,3,4}}为什么错的
C语言中数组在内存中的存储是连续的若干内存单元,当编译器确定分配多少内存单元的时候,它至少要知道二维数组的每行有多少个元素,因此我们可以声明int d[][3]={{1,2,3},{4,5,6},{7,8,9}},但是我们不能声明你提问的结构。这其实本质是如何理解C语言编译器对内存组织的问题。

求C语言二维数组问题。。(30分)
int a[][3]={{1,2,3}{},{1,1}};第一第二列中间少了一个逗号,括号内不能没有元素。

C语言,求过程。
答案选B,你给的代码在输出语句中并没有输出空格,而答案每个选项的相邻两个数之间都用一个空格隔开,所以应该在输出的地方补上一个空格。分析:这题考查对二维数组的理解。声明一个二维数组时,如果给出了初始化列表,那么第一维的 [] 括号中的数字可以忽略不写,由编译器来计算初始化列表值的个数...

c语言关于定义二维数组的问题
首先你要理解二维数组的真正含义,它的第一维就是一组数据的起始地址,第二维就是某组数据中的某个值.其次,你要知道a[][4]所表达的意思,是指二维数组a的每一维都是由4个元素组成的一维数组.而编译器可以根据你赋给a的初值个数计算它的第一维长度(元素总个数\/4,如果不能整除,则长度加1,此时...

C语言中二维数组的第一维长度是什么意思
二维数组,也就是一组数据,有两个维度行和列。比如 int a[M][N];定义了一个M行N列的数组,总元素个数为M*N。其第一维长度,也就是总的行数,在C语言中,就是定义中的M。类似的,第二维长度,也就是每行元素个数。在C语言中就是定义中的N。

C语言中如何将二维数组作为函数的参数传递
在C语言中可以用二维数组作为实参或者形参。1、函数中用二维数组作为形参,函数声明中可以指定所有维数的大小,也可以省略第1维的维数如:void f(int array[3][10]); \/\/正确 void f(int array[][10]); \/\/正确上面的两种二维数组形参表示都是正确的。2、函数中用二维数组作为形参,不能把第...

C语言的小问题
a的第一个维度就是3。系统会根据第二个维度大小自动设置第一个维度。注意,这里第二维度是不能像第一个维度那样省略的。编译器会自动计算一个最小的,且又能包容所有那些初始值的维度大小。而如果对于计算出来的维度大小,那些初始值不能把整个数组完全填满的话,那么,其余的那些元素将被初始化为0。...

C语言中二维数组的定义问题
1. 二维数组的第一个维度缺省是:举个例子:int tar[][2] = {1,2,3,4};因为大括号中有4个元素,而且第二个维度是2,所以就可以计算出来第一维度是2.所以是可以缺省的。2. 你的这个例子中,第一维缺省的应该是(7*8+1)\/(__MAXITERMLEN__+1) 向上取整。3. 因为fd_jpf1[i]是一个...

数组的定义:intx[ ][3]={0}
定义一个int型二维数组,这个数组有三列,行数要由{}里的元素个数确定 {}里有n个元素,则有(int)(n\/3)+1行,把{}里的元素顺次填充数组,填充不足的元素自动初始化为0 例如你写int x[][3]={1,2,3,4},这里n=4,(int)(4\/3)+1=2,则相当于定义int x[2][3]={{1,2,3},{4...

C语言字符串二维数组引用可以省略列下标吗?
(1)c语言的二维数组的每一行都可以看成一个一维数组,如书上的name就可以看成5个一维数组组成的。如果数组恰好定义成char类型,那这些一维数组又可以看成字符串。(2)代码一开始就是用strcpy函数对这5个字符串赋值。每行的大小只有10个字节,因此它还要检测输入是否越界。老师应该说过,c字符串的结尾要...

相似回答