행렬 더하고 곱하고 하는 프로그램 짠건데...

문제가 하나 있어

이차원 배열 리턴시에는 int*로 보내는데 내가 PRINTMATRIX라는 행렬 출력만을 위한 함수를 따로 하나 만들어서 써야하는데

이거 int형 자료 받는 함수란 말야... 근데 MULTIPLYMATRIX 랑 ADDMATRIX 함수는 리턴값이 int*로 나와서 저 PRINTMATRIX 함수를 사용 할수 가 없는데 어떻게 해야함....

이거때매 엄청 고민중인데 내 머리로는 안되는거 같음... ㅠㅠ 도와줘....


#include <stdio.h>

#include <stdlib.h>

#include <time.h>


#define R 3

#define C 3


int* ADDMATRIX(int(*a)[C], int(*b)[C]);

int* MULTIPLYMATRIX(int(*a)[C], int(*b)[C]);

void PRINTMATRIX(int(*a)[C]);


int main()

{

int p[R][C], q[R][C];

int i, j;

int rand_num;


srand(time(NULL));


for (i = 0; i < R; ++i)

{

for (j = 0; j < C; ++j)

{

rand_num = rand() % 10;


p[i][j] = rand_num;


rand_num = rand() % 10;


q[i][j] = rand_num;

}

}

printf("\n p =\n");

PRINTMATRIX(p);


printf("\n q =\n");

PRINTMATRIX(q);

printf("\n p+q =\n");

PRINTMATRIX(ADDMATRIX(p, q));


printf("\n p*q=\n");

PRINTMATRIX(MULTIPLYMATRIX(p, q));


getchar();

return 0;

}


void PRINTMATRIX(int(*p)[C])

{

int i, j;


printf("\n");


for (i = 0; i < R; ++i)

{

for (j = 0; j < C; ++j)

{

printf("=", p[i][j]);

}

printf("\n");

}

printf("\n");

}



int* ADDMATRIX(int(*p)[C], int(*q)[C])

{

int sum[R][C];

int i,j;


for (i = 0; i < R;i++)

{

for (j = 0; j < C; j++)

{

sum[i][j] = p[i][j] + p[i][j];

}

}

return (int*)sum;

}


int* MULTIPLYMATRIX(int(*p)[C], int(*q)[C])

{

int product[R][C];

int i,j,k;


for (i = 0; i < R; i++)

{

for (j = 0; j < C; j++)

{

for (k = 0; j < R;k++)

product[i][j] += (p[i][k])*(q[k][j]);

}

}

}



return (int*)product;