二维数组定义 **a

来源:百度知道 编辑:UC知道 时间:2024/06/27 21:47:13
比如定义一个二维数组、
可不可以这样
float **array;
哪位大大给解释一下这样定义的含义。。
float **array;
main()
{
int row,column,i,j,k,n;
float temp,*x;
printf("please enter the value of the row:");
scanf("%d",&row);
printf("please enter the value of the column:");
scanf("%d",&column);
x=(float*)malloc(row*sizeof(float));
*array=(float*)malloc(row*sizeof(float));
for(i=0;i<row;i++)
{ array[i]=(float*)malloc(column*sizeof(float));
for(j=0;j<column;j++)
{ printf("please enter the array[%d][%d]=",i,j);
scanf("%f",&temp);
array[i][j]=temp;
}
}

上面就是这个2维数组的输入。。
。。。0分题,,没点分的习惯。。。
不过俺已经知道了。0 0

float **array;
是指向指针的指针,可以用来指向2维数组.

如果要用 array[j][i] 表示数组单元,必须预先分配存储单元.

float **a;
int NR=12,NC=10; // 12行10列
int i,j;
// 分配:
a = (float **) malloc(sizeof(float *) * NR);
for (j=0;j<NR;j++){
a[j] = (float *) malloc(sizeof(float) * NC);
};
分配后可用 a[j][i] 表示数组单元.
a[0]...a[11] 指向数组每行的始地址.

回楼上和楼主 **a是指向指针的指针 因为是0分题 我就懒得看了

有两个**吗,没见过