본문 바로가기
프로그래머의 길/C & C++

2차원 배열 매개변수로 받는 방법

by 제이콥케이 2007. 3. 9.
반응형
 

#include <stdio.h>


void func(int (*ar)[3], int size)  // 2차원 배열을 받는 함수

{

     int i,j;


     for (i=0;i<size;i++) {

          for (j=0;j<3;j++) {

              printf("ar[%d][%d]=%d\n",i,j,ar[i][j]);

          }

     }

     puts("");

}


void main()

{

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

     int ar2[3][3]={{7,8,9},{10,11,12},{13,14,15}};


     func(ar1,2);

     func(ar2,3);

}


참고 : 배열과 포인터의 관계

int arr[3][4];

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

arr[i][j]    ==  *(arr[i]+j)  ==  *(*(arr+i)+j)
printf("%d",arr[i]);     ==    printf("%d",*(arr+i));

sizeof(arr);               =   3*4*4   (2차원배열 전부를 카리키는 포인터)
sizeof(arr+1);            =         4   (주소만 가진 순수 포인터)
sizeof(*(arr+1));        =      4*4   (2차원배열중 arr[1]배열 전부를 가리키는 포인터)
sizeof(arr[1]);           =      4*4  (2차원배열중 arr[1]배열 전부를 가리키는 포인터)
sizeof(*(arr[1])+1);    =         4   (값에다가 1을 더하는 것으로 int 형이다)

반응형