在C语言中,二维数组元素在内存中逐行存储。
二维数组本质上是一个以数组为数组元素的数组,即“数组的数组”,类型说明符数组名[常量表达式][常量表达式]。二维数组在概念上是二维的,也就是说它的下标在两个方向上变化,并且下标变量在数组中的位置也是在一个平面上,而不是像一维数组那样只是一个向量。
然而,实际的硬件内存是连续寻址的,这意味着内存单元在一维上线性排列。一维内存中存储二维数组有两种方式:一种是按行排列,即放置完一行后,依次放置第二行。另一种是按列排列,即放置一列后,放入第二列。在C语言中,二维数组按行排列。
例如:float[3][4],b[5][10];定义a为3*4(3行4列)的数组,b为5*10(5行10列)的数组。注意不能写成floata[3,4],b[5,10];具体可以表示为:a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}
扩展信息:
1.表示方法:
数组元素也是一个变量,由数组名后跟下标来标识。下标表示数组中元素的序号。数组元素的一般形式为:数组名[下标]其中下标只能是整型常量或整型表达式。如果是小数,C编译器会自动四舍五入。例如,a[5]、a[i+j]、a[i++]都是合法的数组元素。数组元素通常也称为下标变量。使用下标变量之前必须先定义数组。
2.赋值方法:
初始化赋值的一般形式为:静态类型说明符数组名[常量表达式]={value,value...value};其中static表示它是静态存储类型。C语言规定只能对静态存储数组和外部存储数组进行始化和赋值。{}中的每个数据值是每个元素的初始值,各个值之间用逗号分隔。例如:staticinta[10]={0,1,2,3,4,5,6,7,8,9};相当于a[0]=0;a[1]=1...a[9]=9;
3.使用规则:
1.数组的类型实际上是指数组元素的值类型。对于同一个数组,其所有元素的数据类型都是相同的。
2.数组名的书写规则应符合标识符的书写规则。
3.数组名不能与其他变量名相同。
4.您可以只为某些元素分配初始值。当{}中的值个数小于元素个数时,只对前部分元素赋值。例如:staticinta[10]={0,1,2,3,4};表示只对a[0]~a[4]这5个元素赋值,后面5个元素自动赋值0。
5.只能对元素一一赋值,不能对整个数组赋值。例如,给所有十个元素赋值1只能写成:staticinta[10]={1,1,1,1,1,1,1,1,1,1};但不能写成:staticinta[10]=1;(请注意:这在C和C#语言中都是如此,但并非所有涉及数组的地方都是如此。数据库从1开始。)
6.如果不可初始化,当为数组分配初始值时,所有元素的值为0。
7.如果所有元素都被赋值,则数组描述中不需要给出数组元素的数量。例如:staticinta[5]={1,2,3,4,5};可以写成:staticinta[]={1,2,3,4,5};可以在程序执行期间对数组进行动态分配。进行动态分配。这时可以用循环语句配合scanf函数对数组元素进行一一赋值。
参考来源:-二维数组
上一篇:小米插内存使用情况
下一篇:内存条能4+8只显示8g