我想使用指向指针的指针初始化一个二维数组,我编写了以下代码。
下面的代码是很多硬编码,但由于我是指针的初学者,我想这样做。
该代码未将输出作为段错误给出。
不过我觉得一切都很好。
#include<stdio.h>
#include<stdlib.h>
int readinput1(int **a,int row,int column);
int readinput2(int **b,int row,int column);
int sumoftables(int **a,int **b,int **c,int row,int column);
int displayresult(int **c,int row,int column);
int main()
{
int **a,**b,**c,row,column;
printf("no.of rows of desired matrix:");
scanf("%d",&row);
printf("no.of columns of desired matrix:");
scanf("%d",&column);
a=(int**)malloc(row*column*sizeof(int));>can i do the memory allocation like this
readinput1(a,row,column);
b=(int**)malloc(row*column*sizeof(int));
readinput2(b,row,column);
c=(int**)malloc(row*column*sizeof(int));
sumoftables(a,b,c,row,column);
printf("\n\n\n");
displayresult(c,row,column);
}
int readinput1(int **a,int row,int column)
{
int p,q;
for(p=0;p<row;p++)
{
for(q=0;q<column;q++)
{
scanf("\n%x",(*(a+p)+q));
}
}
return 0;
}
int readinput2t2(int **b,int row,int column)
{
int p,q;
for(p=0;p<row;p++)
{
for(q=0;q<column;q++)
{
scanf("\n%x",(*(b+p)+q));
}
}
return 0;
}
int sumoftables(int **a,int **b,int **c,int row,int column)
{
int p,q;
for(p=0;p<row;p++)
{
for(q=0;q<column;q++)
{
*(*(c+p)+q)=*(*(a+p)+q)+*(*(b+p)+q);
}
}
return 0;
}
int displayresult(int **c,int row,int column)
{
int r,s;
for(r=0;r<row;r++)
{
for(s=0;s<column;s++)
{
printf("\t%d",*(*(c+r)+s));
}
printf("\n");
}
return 0;
}
[1]: /image/aj1AI.png
最佳答案
您可以使用以下代码为二维数组分配内存:
void array_2d_allocate(int ***a, int row, int column)
{
*a =(int**)malloc(row*sizeof(int*));
for(int i=0; i < row; i++){
(*a)[i] = (int*)malloc(column*sizeof(int));
}
}
int main()
{
int **a,**b,**c,row,column;
printf("no.of rows of desired matrix:");
scanf("%d",&row);
printf("no.of columns of desired matrix:");
scanf("%d",&column);
array_2d_allocate(&a, row, column);
readinput1(a,row,column);
array_2d_allocate(&b, row, column);
readinput2(b,row,column);
array_2d_allocate(&c, row, column);
sumoftables(a,b,c,row,column);
printf("\n\n\n");
displayresult(c,row,column);
}
关于我可以使用 **i 而不是 *i[20] 来初始化二维数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42121901/