定义数组 int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}} int x[][3]={1,2,3,4}
前者为什么是错的,后者为什么是对的?我觉得对于后者1,2,3,4后面可以跟很多省略掉的0,那么数组的第一维度就无法确定了,而对于前者1,2,3后面也可以省略掉很多0,那么...
前者为什么是错的,后者为什么是对的?
我觉得对于后者 1,2,3,4后面可以跟很多省略掉的0,那么数组的第一维度就无法确定了,而对于前者1,2,3后面也可以省略掉很多0,那么第二维度也无法确定了。 展开
我觉得对于后者 1,2,3,4后面可以跟很多省略掉的0,那么数组的第一维度就无法确定了,而对于前者1,2,3后面也可以省略掉很多0,那么第二维度也无法确定了。 展开
展开全部
你的理解有一半是对的,有一半是错的。对的就是你明确了两个数组都是不确定的,错的就是你误以为0可以有无限个。
你要知道第一维度和第二维度都代表什么。前面代表数组有几行,后面代表每行有几个元素。
如果int [][3] = {1,2,3}那么系统知道了每行有几个,就可以确定数组为a[1][3];
如果int [][3] = {1,2,3,4};那么系统就确定数组为a[2][3]= {1,2,3,4,0,0};0的个数就可以被确定了。
但是如果是int [4][]={1,2,3}那么系统就不知道每行有几个,就没法确定有几个0了。
你可以试试直接定义a[]={1,2,3};是可以的。相当于a[3];
你要知道第一维度和第二维度都代表什么。前面代表数组有几行,后面代表每行有几个元素。
如果int [][3] = {1,2,3}那么系统知道了每行有几个,就可以确定数组为a[1][3];
如果int [][3] = {1,2,3,4};那么系统就确定数组为a[2][3]= {1,2,3,4,0,0};0的个数就可以被确定了。
但是如果是int [4][]={1,2,3}那么系统就不知道每行有几个,就没法确定有几个0了。
你可以试试直接定义a[]={1,2,3};是可以的。相当于a[3];
展开全部
关于多维数组的定义有一个约定是这样的:
在多维数组中只有第一维才能根据初始化列表缺省地提供,剩余的几个维必须显示的写出,这样编译器才能推断出每个数组维数的长度。
关于你的疑问例如后者:
int x [][3] = {{1,2,3}}; 第一维是1
int x [][3] = {{1,2,3},{1,2,3}}; 第一维是2
关于后者你的理解是错误的,3代表每一维有三个元素,而你写了四个。
在多维数组中只有第一维才能根据初始化列表缺省地提供,剩余的几个维必须显示的写出,这样编译器才能推断出每个数组维数的长度。
关于你的疑问例如后者:
int x [][3] = {{1,2,3}}; 第一维是1
int x [][3] = {{1,2,3},{1,2,3}}; 第一维是2
关于后者你的理解是错误的,3代表每一维有三个元素,而你写了四个。
追问
int x[][3]={1,2,3,4}等价于int x[][3]={1,2,3,4,0,0}吗?
追答
是等价的,但是这样写结构不清晰,可读性比较差。
{{1,2,3},{1,2,3},{1,2,3},{1,2,3}}这样写比较好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只允许第一维度可以省略,如:
x[]={1,2,3};
x[][5]={1,2,3};
x[][5][6]={1,2,3};
不允许如下定义:
x[4][]={1,2,3};
x[4][][3]={1,2,3};
编译器根据实际赋值,确定第一维度
x[]={1,2,3};
x[][5]={1,2,3};
x[][5][6]={1,2,3};
不允许如下定义:
x[4][]={1,2,3};
x[4][][3]={1,2,3};
编译器根据实际赋值,确定第一维度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,多维数组可以看成是一维数组,其实计算计就是这么做的。
那么
int x[4][];
这个的一行有多少数,你不知道,你叫计算机怎么申请空间。
int x[][3];
它的行是由你赋值来确定的
那么
int x[4][];
这个的一行有多少数,你不知道,你叫计算机怎么申请空间。
int x[][3];
它的行是由你赋值来确定的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在谭浩强所编的C程序设计中有关于这方面的介绍
用矩阵形式表示二维数组,是逻辑上的概念,能形象地表示出行列关系。而在内存中,各元素是连续存放的,不是二维的,是线性的。
在C语言中,二维数组中元素的排列顺序是按行存放的,即在内存中先顺序存放第一行的元素,接着再存放第二行的元素。
用矩阵形式表示二维数组,是逻辑上的概念,能形象地表示出行列关系。而在内存中,各元素是连续存放的,不是二维的,是线性的。
在C语言中,二维数组中元素的排列顺序是按行存放的,即在内存中先顺序存放第一行的元素,接着再存放第二行的元素。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询