2012. 7. 13. 14:44

#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++);
        }
}

Posted by 몰라욧