본문 바로가기

Programming Study/C

다차원 배열과 포인터

2차원 배열 이름의 포인터 형

  - 2차원 배열의 이름이 더블 포인터 형이라는 오해를 절대로 하지 말라!

 

배열 포인터 변수

 

주의! '배열 포인터'와 '포인터 배열'을 혼동하지 말자!

int * whoA[4];      // 포인터 배열

int (*whoB)[4];     // 배열 포인터

whoA는 int형 포인터 변수로 이뤄진 int형 포인터 배열 선언이고,

whoB는 가로길이가 4인 int형 2차원 배열을 가리키는 용도의 포인터 변수 선언이다.

 

2차원 배열을 함수의 인자로 전달하기

int main(void)

{

    int arr1[2][7];

    double arr2[4][5]

    SimpleFunc(arr1, arr2);

}

 

//arr1의 주소값을 전달받을 수 있는 매개 변수 이름을 parr1,

//arr2의 주소값을 전달받을 수 있는 매개 변수 이름을 parr2라 하자.

//SimpleFunc 함수가 반환형이 void라고 가정하고 정의하면

 

void SimpleFunc(int (*parr1)[7], double (*parr2)[5]){···············}

//또는

void SimpleFunc(int parr1[][7], double parr2[][5]){···············}

//로 정의 할 수 있다.

 

2차원 배열에서도 arr[i]와 *(arr+i)는 같다.

arr[i] == *(arr+i)

 

int arr[3][2]={{1,2},{3,4},{5,6}};

 

arr[2][1] = 4;

(*(arr+2))[1] = 4;

*(arr[2]+1) = 4;

*(*(arr+2)+1) = 4;

위의 네개의 식은 모두 같은 식이다.

 

 

- 윤성우 저, 열혈강의 C프로그래밍 中 -

 

 

'Programming Study > C' 카테고리의 다른 글

문자와 문자열 관련 함수  (0) 2014.09.04
함수 포인터와 void 포인터  (0) 2014.09.03
포인터의 포인터  (0) 2014.09.03
다차원 배열  (0) 2014.09.03
포인터와 함수  (0) 2014.09.02