I wanted to initialize a 2d array using pointers to pointers and I wrote the following code.
The below code is lot of hard coding but as I am a beginner to pointers I want to do it this way.
The code is not giving the output as segmentation fault.
Everything seems well to me though.
#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]: https://i.stack.imgur.com/aj1AI.png