二维数组为什么只能省略行 c语言的数组的中括号中数字能否省略?什么时候可以省略?
c语言的数组的中括号中数字能否省略?什么时候可以省略?定义数组时,请同时初始化它。括号中的数字可以省略。例如,int a[]={1,2,3,4,5}数组的大小是5,范围是a[0]到a[4]。但是,如果
c语言的数组的中括号中数字能否省略?什么时候可以省略?
定义数组时,请同时初始化它。括号中的数字可以省略。例如,int a[]={1,2,3,4,5}数组的大小是5,范围是a[0]到a[4]。但是,如果要定义一个长度为10的数组,而只初始化前五个数据,则必须带上数字字,如:int a[10]={1,2,3,4,5}在这种情况下,一个数组中有10个数字,前五个是1到5,后五个是0
或者二维数组,行数可以省略,但列数不能省略,如int A[[4]={1,2,3,4},{5,6,7,8},{9,10,11,12}系统中的默认行数为3
另外,在形式参数中,可以省略一维数组的长度或二维数组中的行数,如void fun(int A[],int A[]函数中,第一个参数是一维数组,只要实参数经过一维数组,就可以接收。它不需要同样的长度。同样,第二个参数只是一个列数为4的二维数组
关于以上三种情况,希望能对您有所帮助
这是因为每个数组元素的存储距离都很近,而C/C等高级语言采用的是“行优先存储”的方法,即,首先将元素存储在同一行上,然后在行尾存储下一行。因此,一行中的几个元素不能省略。在定义二维数组时,我们必须首先明确一行中有几个元素。如果是三维数组,则必须同时指定行数和列数。只有“页数”可以省略。
声明二维数组并赋值时每行的列数可以不一样么?
当二维数组用作参数时,必须指定所有维度或忽略第一维度,但不能忽略第二维度或更高维度的大小,这受编译器原则的限制。实际上,编译器处理数组的方式如下:
将数组int设置为a[M][n]。如果要访问a[i][J]的值,编译器的寻址方法是:]&A[i][J]=&A[0][0]i*sizeof(int)*N J*sizeof(int)//注意N是第二个维度的维度,因此可以省略第一个维度的维度,而不能省略其他维度的维度。
定义二维数组时,初始化它或忽略第一个维度。编译器将根据您的初始化语句自动确定第一个维度。
下面是一个示例:][CPP]查看纯拷贝
#include
#include
#include
int main()
{
char a[10][10
]memset(a,0,sizeof(a))
printf(%dn”,sizeof(a))
for(int i=0I
{
for(int j=0j
printf(%d”,[i][J])
}]系统(“暂停”
]返回0
}