2중배열과 함수에 관해서 질문입니다.

spinel1의 이미지

#include<stdio.h>

void sum(int **a, int **b, int **c);

main()
{
	int a[3][3], b[3][3], c[3][3];
	int i, j;
	for(i=0 ; i<3 ; i++)
	{
		for(j=0;j<3;j++)
		{
			a[i][j]=i+j;
			b[i][j]=i-j;
		}
	}
	sum(a, b, c);

}

void sum(int **a, int **b, int **c)
{
	int i, j;
	for(i=0 ; i<3 ; i++)
	{
		for(j=0;j<3;j++)
		{
			c[i][j]=a[i][j]+b[i][j];
		}
	}

}


위 코드가 틀린 이유가 먼지를 모르겠네요. 2중 배열을 함수로 넘기려면 어떻게 해야 하는지 알려 주세요.

moonzoo의 이미지

spinel1 wrote:
#include<stdio.h>

void sum(int **a, int **b, int **c);

main()
{
	int a[3][3], b[3][3], c[3][3];
	int i, j;
	for(i=0 ; i<3 ; i++)
	{
		for(j=0;j<3;j++)
		{
			a[i][j]=i+j;
			b[i][j]=i-j;
		}
	}
	sum(a, b, c);

}

void sum(int **a, int **b, int **c)
{
	int i, j;
	for(i=0 ; i<3 ; i++)
	{
		for(j=0;j<3;j++)
		{
			c[i][j]=a[i][j]+b[i][j];
		}
	}

}


위 코드가 틀린 이유가 먼지를 모르겠네요. 2중 배열을 함수로 넘기려면 어떻게 해야 하는지 알려 주세요.

예를 들어 x[5][4] 포인터로 받을려면

(*x)[4]등과 같이 받아야 합니다.

참고로 우리가 배열을 선언할때

a[][5] 는 가능하지만 a[][] 또는 a[5][] 등은 적합치 않은

이유등에 대해 연관지어 생각해 보시면 도움이 될듯 합니다.