종종 헷갈리는 pointer와 배열

2008-11-24

*(pointer + n) 는 pointer[n] 과 같다. 겹쳐져 있으면 해석은 오른쪽부터.

이걸 알면 모두 OK.

pointer[x][y][z] 는 *(pointer[x][y]+z) pointer[x][y] 는 *(pointer[x]+y) pointer[x]는 *(pointer+x)

그러니 pointer[x][y][z]는 ((*(pointer+x)+y)+z)

추가로 알아둘 사항. void * pp; int a=35; pp = &a; int ppp[5][5] = { 0, };

printf("%dn",sizeof(pp));
printf("%dn",*(int*)pp);
printf("%dn",sizeof(ppp));
printf("%dn",sizeof(ppp[0]));
printf("%dn",sizeof(ppp[0][0]));
printf("%pn",ppp);
printf("%pn",ppp+1);
printf("%pn",*(ppp+2)+1);
printf("%pn",ppp[2]+1);
printf("%pn",&ppp[2][1]);
printf("%pn",ppp[0][0]+1);

pointer +1 은 pointer값 + sizeof(*pointer);

혹여나 해서 추가해보는 codepad link

SmartFTP에서 디렉토리 목록 안 보이는 문제 Windows XP 사용자 계정 비밀번호를 잊었을 때