[C] 포인터를 사용하여 다차원 배열을 함수에 전달하기
#include <stdio.h>
void print1(int (*ptr)[4]);
void print2(int (*ptr)[4],int n);
int main() {
int multi[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*ptr)[4],count;
ptr=multi;
for(count=0;count<3;count++) {
print1(ptr++);
}
puts("\n\nPress Enter");
getchar();
print2(multi,3);
printf("\n");
return 0;
}
void print1(int (*ptr)[4]) {
int *p,count;
p=(int*)ptr; //p는 int형에 대한 포인터 p가 ptr에 있는 주소와 같아지게
//유형 변환을 해야 한다
//현재 ptr은 16byte씩증가 p는 4byte씩 증가
for(count=0;count<4;count++) {
printf("\n%d",*p++);
}
}
void print2(int (*ptr)[4],int n) {
int *p,count;
p=(int*)ptr;
for(count=0;count<4*n;count++) {
printf("\n%d",*p++);
}
}