c·c++/c 프로그래밍

문자열의 배열과 포인터

바로이순간 2011. 12. 16. 11:41

#include <stdio.h>
int main() {
    int i=1, j=1;
    char s[3][3][7] = {
       {"dog",   "cat",   "tiger" },
       {"apple", "orange","banana" },
       {"terran","zerg",  "protos" } };
 
    char *p = (char *)s ;
    char (*p2)[7] = (void *)s;
    char (*p3)[3][7]= (void *)s;

 

    for(i=0;i<3;++i) {
        for(j=0;j<3;++j) {
            printf(" &s[%d][%d] = %p :: %s \n", i,j, &s[i][j], &s[i][j]);
        }
    }
    printf("\n");
    for(i=0;i<3;++i) {
        for(j=0;j<3;++j) {
            printf(" s[%d][%d] = %p :: %s \n", i,j, s[i][j], s[i][j]);
        }
    }
    printf("\n");
    for(i=0;i<3;++i) {
        for(j=0;j<3;++j) {
            printf(" *(p3+%d)+%d = %p :: %s \n", i,j, *(p3+i)+j, *(p3+i)+j);
        }
    }
    printf("\n");
    for(i=0;i<3;++i) {
        for(j=0;j<3;++j) {
            printf(" *(*(p3+%d)+%d) = %p :: %s \n", i,j, *(*(p3+i)+j), *(*(p3+i)+j));
        }
    }
    printf("\n");
    for(i=0;i<9;++i) {
        printf(" p2+%d = %p :: %s \n", i, p2+i, p2+i);
    }


    return 0;
}