c语言二维数组的初始化

Python010

c语言二维数组的初始化,第1张

//不想讲究技巧的话,就如下面老老实实的初始化

int twoArray[3][5]

int i,j

for (i = 0i<3i++){

for (j = 0j<5j++){

twoArray[i][j] = 0

}

}

//有时候初始化时有数据,就按下面的方法

int twoArray[][]={{2,3,4},{5,4,5}}

//以上初始化,表示数组的大小为[2][3]

二维数组可以看成特殊的一维数组,每个元素又由一个一维数组组成。

例如:构建一个maxrownum*maxrownum的矩阵

long double **data1_bfE

data1_bfE=(long double **)malloc(maxrownum*sizeof(long double *))

for(i=0i<maxrownumi++)

{

data1_bfE[i]=(long double *)malloc(maxrownum*sizeof(*data1_bfE))

}

data1_bfE[i]=(long double *)malloc(maxrownum*sizeof(*data1_bfE))

动态分配maxrownum个long double的内存空间,跟long double a[5]相似,但前者是堆上分配的,后者是栈上分配的

data1_bfE=(long double **)malloc(maxrownum*sizeof(long double *))

意思就是定义一个有maxrownum个long double类型的指针的动态数组,然后在里面存放指针,相当于容器,data1_bfE就会成为指针的指针。

注意事项:C语言在定义数组和表示数组元素时常常采用a[ ][ ]的形式,使用方便,不易出错。

利用给数组赋值时未赋值部分C系统自动赋值为0是一种方法。

还可以利用memset()函数, 它可以一字节一字节地把整个数组设置为一个指定的值。 memset()函数在string.h和mem.h头文件中声明,它把数组的起始地址作为其第一个参数,第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。其函数原型为:

void *memset(void*,int,unsigned);

其中void*表示起始地址,int 表示要填充的值,最后的unsigned表示填充的字节数。

例如:

#include<string.h>

void main()

{

int a[10][20]={0}//方法一,所有初始化为0

int *p[10][20]={NULL}

char c[10][20]={'\0'}

double b[50][200]}

memset(b,0,sizeof(b))//方法二,所有初始化为0

}