#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 형이다)
'프로그래머의 길 > C & C++' 카테고리의 다른 글
함수 포인터 & void 포인터 변수 & typedef (0) | 2007.03.13 |
---|---|
2차원 배열 처럼 사용할 수 있는 배열과 포인터형 배열의 조합 (0) | 2007.03.12 |
extern, static 이란? (0) | 2007.03.09 |
초보자들이 실수하는 getchar() 바로 알기 (0) | 2007.03.07 |
고수준 파일 입출력 함수 정리 (0) | 2007.03.07 |