code:
//dynamically 2d array
#include<stdio.h>
#include<stdlib.h>
int **allocate(int nRows,int nCols)
{
int **p;
p=(int**)malloc(nRows*sizeof(int*));
if(p==NULL)
exit(0);
int i,j;
for(i=0; i<nRows; i++)
{
*(p+i)=(int*)malloc(nCols*sizeof(int));
}
return p;
}
void inputValues(int **p, int nRows, int nCols)
{
int i,j;
for(i=0; i<nRows; i++)
{
for(j=0; j<nCols; j++)
{
printf("Enter value for %d row %d col: ",i,j);
scanf("%d",(*(p+i)+j));
}
}
}
void printValues(int **p, int nRows, int nCols)
{
int i,j;
for(i=0; i<nRows; i++)
{
for(j=0; j<nCols; j++)
{
printf("%6d",*(*(p+i)+j));
}
printf("\n");
}
}
void deAllocate(int **p, int nRows, int nCols)
{
free(p);
}
int main()
{
int **p;
int nRows,nCols;
printf("enter number of rows:");
scanf("%d",&nRows);
printf("enter number of cols:");
scanf("%d",&nCols);
p=allocate(nRows,nCols);
inputValues(p,nRows,nCols);
printValues(p,nRows,nCols);
deAllocate(p,nRows,nCols);
return 0;
}
with free:
//dynamically 2d array
#include<stdio.h>
#include<stdlib.h>
int **allocate(int nRows,int nCols)
{
int **p;
p=(int**)malloc(nRows*sizeof(int*));
if(p==NULL)
exit(0);
int i,j;
for(i=0; i<nRows; i++)
{
*(p+i)=(int*)malloc(nCols*sizeof(int));
}
return p;
}
void inputValues(int **p, int nRows, int nCols)
{
int i,j;
for(i=0; i<nRows; i++)
{
for(j=0; j<nCols; j++)
{
printf("Enter value for %d row %d col: ",i,j);
scanf("%d",(*(p+i)+j));
}
}
}
void printValues(int **p, int nRows, int nCols)
{
int i,j;
for(i=0; i<nRows; i++)
{
for(j=0; j<nCols; j++)
{
printf("%6d",*(*(p+i)+j));
}
printf("\n");
}
}
void deAllocate(int **p, int nRows, int nCols)
{
int i,j;
for(i=0; i<nRows; i++)
{
for(j=0; j<nCols; j++)
{
free(((p+i)+j));
}
}
}
int main()
{
int **p;
int nRows,nCols;
printf("enter number of rows:");
scanf("%d",&nRows);
printf("enter number of cols:");
scanf("%d",&nCols);
p=allocate(nRows,nCols);
inputValues(p,nRows,nCols);
printValues(p,nRows,nCols);
deAllocate(p,nRows,nCols);
return 0;
}
vid: