C언어

이차원(2차원) 배열

고요한하늘... 2006. 3. 4. 18:18

 

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차원을 포인팅할수있는 포인터가 아니다.

 

 

'C언어' 카테고리의 다른 글

복잡한 함수포인터 읽기(고급)  (0) 2006.05.08
복잡한 함수포인터 (고급)  (0) 2006.05.05
iconv 를 이용한 문자열 변환(utf-8)  (0) 2006.04.04
global(전역변수) & static(정적변수) variable  (0) 2006.03.04
가변인자  (0) 2006.03.04