Many author do not include topics about returning array from a functions in their books or articles. It is because, in most of the cases, there is no need of array to be returned from a function. Since, on passing array by its name, the address of its first member is passed and any changes made on its formal arguments reflects on actual arguments. But sometimes, there may arise the situation, where an array have to be returned from a function, for example, multiplying two matrices and assigning the result to another matrix. This can be done by creating a pointer to an array. The source code of returning two dimensional array with reference to matrix addition is given here.

#include <stdio.h>int (*(Matrix_sum)(int matrix1[][3], int matrix2[][3]))[3]{int i, j;for(i = 0; i < 3; i++){for(j = 0; j < 3; j++){matrix1[i][j] = matrix1[i][j] + matrix2[i][j];}}return matrix1;}int main(){int x[3][3], y[3][3];int (*a)[3]; //pointer to an arrayint i,j;printf("Enter the matrix1: \n");for(i = 0; i < 3; i++){for(j = 0; j < 3; j++){scanf("%d",&x[i][j]);}}printf("Enter the matrix2: \n");for(i = 0; i < 3; i++){for(j = 0; j < 3; j++){scanf("%d",&y[i][j]);}}a = Matrix_sum(x,y); //asigningprintf("The sum of the matrix is: \n");for(i = 0; i < 3; i++){for(j = 0; j < 3; j++){printf("%d",a[i][j]);printf("\t");}printf("\n");}return 0;}

excellent, very insightful.

ReplyDeletegreat!!

ReplyDeleteThank you.

ReplyDeleteAwesome Code, Helped a lot, take away a lot of headache. Thanks

ReplyDeletethank u...it helped me a lot...

ReplyDeletethx brother.

ReplyDelete