i allocated memory for storing y(transpose of matrix) inside the function. also i allocated memory(for x_transpose) for storing the same result in main program. can reuse the same memory in main also???Code:#include<stdio.h> #include<stdlib.h> int **transpose(int **x,int m,int n); main() { int nrows=2,ncolumns=2,i,j,k=0; //memory allocation for array x int **array; array = malloc(nrows * sizeof(int *)); if(array == NULL) { printf("out of memory\n"); return 0; } for(i = 0; i < nrows; i++) { array[i] = malloc(ncolumns * sizeof(int)); if(array[i] == NULL) { printf("out of memory\n"); return 0; } } //define x printf("x=\n"); for(i=0;i<2;i++) { printf("\n"); for(j=0;j<2;j++) { k=k+5; array[i][j]=i+j+k; printf("%d\t",array[i][j]); } } printf("\n"); //memory allocation for x_transpose, (storing the transpose returned by function) int **x_transpose; x_transpose = malloc(nrows * sizeof(int *)); if(x_transpose == NULL) { printf("out of memory\n"); return 0; } for(i = 0; i < nrows; i++) { x_transpose[i] = malloc(ncolumns * sizeof(int)); if(x_transpose[i] == NULL) { printf("out of memory\n"); return 0; } } //call function x_transpose= transpose(array,nrows,ncolumns); //display transpose printf("x_transpose=\n"); for(i=0;i<2;i++) { printf("\n"); for(j=0;j<2;j++) { printf("%d\t",x_transpose[i][j]); } } } //function_transpose int **transpose(int **x,int m,int n) { int nrows=n,ncolumns=m,i,j; //memory allocation for y,to store transpose int **y; y = malloc(nrows * sizeof(int *)); if(y == NULL) { printf("out of memory\n"); return 0; } for(i = 0; i < nrows; i++) { y[i] = malloc(ncolumns * sizeof(int)); if(y[i] == NULL) { printf("out of memory\n"); return 0; } } for(i=0;i<m;i++) for(j=0;j<n;j++) { y[i][j]=x[j][i]; } return y; }