2차원 포인터에 대해서...
글쓴이: thslrtoo / 작성시간: 목, 2013/09/26 - 9:39오후
#include <stdio.h> int main(void) { int imsi[3][2] = {{3, 5}, {12, 54}, {534, 923}}; int (*imsip)[2]; printf("%d\n", sizeof(imsip+1)); printf("%d\n", sizeof(*(imsip+1))); }
위와 같은 코드가 있슷비니다.
결과 값으로는
=== output ===
4
8
이 나와야 한다고 합니다.
gcc로 컴파일해서 확인해본 결과(책에서도 gcc로 컴파일 합니다.) 아래와 같이 나왔습니다.
=== output ===
8
8
VS2008 로 컴파일 해보니 책과 같은 결과를 받았는데
어떤게 맏는건지요??
그리고 왜 이런 결과가 나온건가요??
Forums:
첫번째 줄 imsip의 타입은 pointer to
첫번째 줄
imsip의 타입은 pointer to array[2] of int
여기에 +1을 더해도 여전히 그 타입은 pointer to array[2] of int 입니다.
두번째 줄
여기에 참조 연산자를 붙이면
array[2] of int 네요.
첫번째 줄의 크기는 pointer 타입과 같고
두번째 줄의 크기는 sizeof(int) * 2와 같네요.
pointer의 크기는 64비트이고 int의 크기는 32비트인 환경이라 생각하면
대충 맞아 떨어지네요.
댓글 달기