c语言有关二维数组变量初始化
二维数组可以看成特殊的一维数组,每个元素又由一个一维数组组成。
例如:构建一个maxrownum*maxrownum的矩阵
long double **data1_bfE;
data1_bfE=(long double **)malloc(maxrownum*sizeof(long double *));
for(i=0;imaxrownum;i++)
{
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语言一个结构中有二维数组,我要对它初始化
只能在定义变量的时候初始化是比较方便的,过了那个村就没有那个店了。也就是只能一个一个定义了,当然如果有规律可循的就可以用memset和for循环的来做。但看你现在的需求明显是初始化为一个没规律的,那就只能一个一个赋值了。
初始化时定义可如下(我这里给出的是数组个数为2的例子,随便取的数值):
SHAPE shapes[2] = {{{1,0,3,4,1,2,1,1,1,1,1,1,1,1,1,1}, 6, 7},
{{1,5,3,4,1,2,2,2,2,2,2,2,2,2,2,2}, 8, 9}};
c语言 怎么把一个二维数组初始化为空
利用给数组赋值时未赋值部分C系统自动赋值为0是一种方法。
还可以利用memset()函数, 它可以一字节一字节地把整个数组设置为一个指定的值。 memset()函数在string.h和mem.h头文件中声明,它把数组的起始地址作为其第一个参数,第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。其函数原型为:
void *memset(void*,int,unsigned);
其中void*表示起始地址,int 表示要填充的值,最后的unsigned表示填充的字节数。
例如:
#includestring.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
}
c语言二维数组的初始化
//不想讲究技巧的话,就如下面老老实实的初始化
int twoArray[3][5];
int i,j;
for (i = 0;i3;i++){
for (j = 0;j5;j++){
twoArray[i][j] = 0;
}
}
//有时候初始化时有数据,就按下面的方法
int twoArray[][]={{2,3,4},{5,4,5}};
//以上初始化,表示数组的大小为[2][3]
C语言如何让二维字符数组全部被初始化为同一个值
1、要有这样一个malloc产生的二维数组,或者用New产生的也行。
2、不能按照图示代码运行。
3、首先先释放数组的数组。
4、然后我们再释放单个数组。
5、然后我们运行就会发现,数组被成功释放,现在的array地址已经是随机地址了。