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
}