c语言——关于二维数组的初始化问题怎么解决

来源:趣味经验馆 2.07W

二维数组只能在定义的时候初始化,初始化方式如下: char hao[][5]={ {' ',' ','*'}, {' ','*',' ','*'}, {'*',' ',' ',' ','*'}, {' ','*',' ','*'}, {' ',' ','*'} }; //第一维度没有给出,按初始化的行数,确定数组第一维度。 初始化定义:在

二维数组可以看成特殊的一维数组,每个元素又由一个一维数组组成。今天小编给大家讲解一下有关二维数组的一些用法。

c语言——关于二维数组的初始化问题怎么解决

材料/工具

电脑

方法

定义二维数组的方法和一维数组相似,如:

声明时给初始值叫初始化。例如:int b[3][4]={1,2,3,4,5,6,7,8,4,4,4,4}; 声明后赋值,可以用赋值语句, b[0][0]=1; b[0][1]=2; b[0][2]=3; b[0][3]=4; b[1][0]=5; b[1][1]=6; b[1][2]=7; b[1][3]=8; b[2][0]=4; b[2][1]=4; b[2][2]=4; b[2][3]=

int a[3][3];

1 2 3 4 5 6 7 0 0 Press any key to continue #include using namespace std; main() { int i,j,a[][3]={1,2,3,4,5,6,7}; for (i=0;i

就是定义了一个3行3列的二维数组。

首先你要理解二维数组的真正含义,它的第一维就是一组数据的起始地址,第二维就是某组数据中的某个值.其次,你要知道a[][4]所表达的意思,是指二维数组a的每一维都是由4个元素组成的一维数组.而编译器可以根据你赋给a的初值个数计算它的第一维长度(

c语言——关于二维数组的初始化问题怎么解决 第2张

要注意,这个3行3列的二维数组是逻辑上的概念,能形象的表示出行列关系。而在内存中,各元素是连续存放的,不是二维的,是线性的,这点大家一定要清楚。

答案是错的,正确的是C int a[2][3] = {{1,2},{3,4},{5,6}}; a[2][3]里面一个{ },就是a[][3]了 所以a[2][3]只能有2个{ } 题目里有3个{ } 越界了,所以不能初始化的是C

c语言——关于二维数组的初始化问题怎么解决 第3张

二维数组的初始化,可以分行给元素赋值,如步骤一的图。

二维数组可以看成特殊的一维数组,每个元素又由一个一维数组组成。 例如:构建一个maxrownum*maxrownum的矩阵 long double **data1_bfE; data1_bfE=(long double **)malloc(maxrownum*sizeof(long double *)); for(i=0;i

也可以将所有数据写在一个花括号内,按照元素在内存中的排列顺序对各元素赋初值。但是这种方法一旦数据很多,会写成一大片,容易遗漏,不方便检查。

你哪些一维数组都是一样长吗 如果是一样长,并且长度是一个已知常量N,假设有5个一维数组,类型为int int array1[N] int array2[N] int array3[N] int array4[N] int array5[N] 假设一维数组是上面的5个。二维数组 int array[5][N] for(int i=0;i

c语言——关于二维数组的初始化问题怎么解决 第4张

可以对部分元素赋值,例如:

1、要有这样一个malloc产生的二维数组,或者用New产生的也行。 2、不能按照图示代码运行。 3、首先先释放数组的数组。 4、然后我们再释放单个数组。 5、然后我们运行就会发现,数组被成功释放,现在的array地址已经是随机地址了。

int a[3][3]={{1},{4},{7}};

1、要有这样一个malloc产生的二维数组,或者用New产生的也行。 2、不能按照图示代码运行。 3、首先先释放数组的数组。 4、然后我们再释放单个数组。 5、然后我们运行就会发现,数组被成功释放,现在的array地址已经是随机地址了。

c语言——关于二维数组的初始化问题怎么解决 第5张

也可以只对某几行赋值,例如:

A)int a[ ][3]={20,34,56,78}; //可确定数组为a[2][3],逐个赋值,一行3个数,其余为0 B)int a[2][3]={20,34,56,78};//容易明白 C)int a[2][ ]={20,34,56,78}; //无法确认一行几个数,即列数 D)int a[ ][3]={{20,34},{56,78}};//逐行赋值,容易确认

int a[3][3]={{1,2},{4}};

定义二维数组a[x][y],其中x代表行数,y代表列数。二维数组在内存中线性存放,因此可以线性访问。如a[3][3]的第八个元素可以用a[0][7]表示,虽然列下标越界了,但由于二维数组线性存放的特点,它实际上和a[2][1]是等价的。

c语言——关于二维数组的初始化问题怎么解决 第6张

如果对全部元素都赋初值,则定义数组时可以对第一维的长度不指定,但第二维的长度不能省去。

初始化就是在定义数组的时候直接给数组赋值: 二维数组初始化的方式如下: int a[3][4]={ {1,1,1,1},{2,2,2,2},{3,3,3,3}}; //给所有的数组元素赋值 int a[3][4]={ 1,1,1,1,2,2,2,2,3,3,3,3}; //给所有的数组元素赋值 int a[3][4]={ {1,1},{2,

也可以只对部分元素赋值,而省略第一维的长度,但应该分行赋值。

只能在定义变量的时候初始化是比较方便的,过了那个村就没有那个店了。也就是只能一个一个定义了,当然如果有规律可循的就可以用memset和for循环的来做。但看你现在的需求明显是初始化为一个没规律的,那就只能一个一个赋值了。 初始化时定义可

c语言——关于二维数组的初始化问题怎么解决 第7张

扩展阅读,以下内容您可能还感兴趣。

C语言如何让二维字符数组全部被初始化为同一个值

1、要有这样一个抄malloc产生的二维数组,或者用New产生的也行。

2、不能按照图示代码运行。

3、首先袭先释放zd数组的数组。

4、然后我们再释放单个数组。

5、然后我们运行就会发现,数组被成功释放,现在的array地址已经是随机地址了。

[C语言程序设计]24.下列选项中不能正确定义并初始化二维数组的是_____。 A)int a[

A)int a[ ][3]={20,34,56,78}; //可确定数百组为a[2][3],逐度个赋值,一行3个数,其余为0

B)int a[2][3]={20,34,56,78};//容易明白知

C)int a[2][ ]={20,34,56,78}; //无法确道认一行几个数,即列数

D)int a[ ][3]={{20,34},{56,78}};//逐行赋值,容易确认追问AC还是不太懂,A后面如果补5个零,那不就变成[3][3]?追答A)int a[ ][3]={20,34,56,78}; //就因为多个78所以是2行,如果没78就是一行,c编译器是按最小占用空间的原则分配

C)int a[2][ ]={20,34,56,78}; //只能确认2行,编译器无法确认一行有几个数,即列数

最简单的就是记住二维数组的列数是不能空缺,系统自动计算不了

C语言 二维数组的定义与初始化

B

C

C语言 以下不能对二维数组初始化的是( ) A、int a[4][2]={0}; B、char a[][3]={"abc,"def"}; C、int?

选B,B选项就是一个错误的表达方式,数组的元素应该是字符,但是题目上是字符串

c语言里面二维数组初始化到底怎么整的 我这书上说的是 数组名[m][n] 如果一个数组a[

定义二维数组百a[x][y],其中x代表行数,y代表列数度。二维数组在内存中线性存放,因此可以线知性访问。如a[3][3]的第八个元素可以用a[0][7]表示,虽然列下道标越界了,但由于二维数组线内性存放的特点容,它实际上和a[2][1]是等价的。更多追问追答追问没懂我就想取出第10个数 我输入a[2][1]当然就可以了。但是我的意思是怎么不画矩阵就能知道第十个数的位置追答若直接以线性方式访问二维数组a中的第n个元素,用a[0][n-1]表示即可。追问那还画矩阵干嘛追答二维数组中的元素通常以行+列方式访问,线性访问的情况很少。

热门标签