returning arrays from function using pointer_segmentation fault
Code:
#include<stdio.h>
#include<stdlib.h>
int **array();
main()
{
int **result=array(),i,j;
//display result
for(i=0;i<2;i++)
printf("\n");
for(j=0;j<2;j++)
printf("%d \t",result[i][j]);
}
//function
int **array()
{
int nrows=2,ncolumns=2,i,j;
// printf("hi");
//memory allocation
int **array;
array = malloc(nrows * sizeof(int *));
if(array == NULL)
{
printf("out of memory\n");
return 0;
}
//printf("hi");
for(i = 0; i < nrows; i++)
{
array[i] = malloc(ncolumns * sizeof(int));
if(array[i] == NULL)
{
printf("out of memory\n");
return 0;
}
}
//create array
for(i=0;i<2;i++)
for(j=0;j<2;j++)
array[i][j]=i+j;
//returning pointer
return array;
printf("hi");
}
it compiled successfully. but shows segmentation fault on running. please help to find error
passing array to function using pointers
Code:
#include<stdio.h>
#include<stdlib.h>
void function(int **x);
main()
{
int nrows=2,ncolumns=2,i,j;
//memory allocation for x
int **x=malloc(nrows*sizeof(int*));
if(x==NULL)
{
printf("out of memory\n");
return 0;
}
for(i=0;i<nrows;i++)
{
x[i]=malloc(ncolumns*sizeof(int));
if(x[i]=NULL)
{
printf("out of memory\n");
return 0;
}
}
printf("code passed me");//checking
//define x
for(i=0;i<2;i++)
for(j=0;j<2;j++)
x[i][j]=i+j+2;
//call function
function(x);
}
//function_definition
function(int **x)
{
int nrows=2,ncolumns=2,i,j,y[2][2];
for(i=0;i<2;i++)
for(j=0;j<2;j++)
y[i][j]=x[i][j]+1;
//display y
for(i=0;i<2;i++)
for(j=0;j<2;j++)
printf("%d",y[i][j]);
}
segmentation fault comes.. help please