char stack[10][100];
이렇게 선언된 stack이라는 이차원 배열을 함수 안에서는 사용하는건 누구나 다 한다.
그런데 이렇게 선언된 배열을 함수의 인자로 넘길때 보통 헤매게 된다.
방법 1 > func(char stack[][100]) 게 넘겨 받는 방법이고 또다른 한가지는
방법 2 > func(char (*stack)[100]) 이다
넘겨 받은 데이터를 사용하는데 있어서 두가지 방법 사이의 차이점은 존재하지 않는다.
두개 모두 stack[i][j]와 같이 사용가능하고, 다만
함수안에서 이차원 배열을 포인팅 할려고 할때는 char (*temp_stact)[100]과 같이 선언하고
사용하면 된다
주의할점은 두번째 방법에서 괄로()를 빼먹으면 전혀 다른 의미가 되기 때문에 주의가 필요하다.
ps.
A > int *pointer1[1024];
B > int (*pointer2)[1024];
이 두개의 의미 차이는 다음과 같다
A >는 int 포인터로 int 로 선언된 변수를 가리킬수 있는 포인터가 1024개가 생긴것과 같고
B > 행이 1024인 2차원 배열을 가리킬수 있는 포인터 한개라는 의미이다.
int arr[10][1024];라는 배열을 포인터로 가리킬때
pointer2 = arr는 가능하지만 pointer1 = arr은 불가능하다
pointer1은 2차원을 포인팅할수있는 포인터가 아니다.