C포인터 관련 질문입니다.
글쓴이: mzzzz11 / 작성시간: 토, 2011/07/16 - 10:36오후
소스 :
int zippo[2][2] = {{1,2,},{3,4}};
printf("%p\n", zippo);
printf("%p\n", *zippo);
printf("%d\n", *zippo[0]);
결과 :
0xbfad0100
0xbfad0100
1
가 나옵니다
여기에서 궁금한 점은 zippo와 zippo[0]은 같은 값을 가지게 되는데 * 연산자를 두 변수 앞에 붙여주면
*zippo는 똑같은 주소값 0xbfad0100이 *zippo[0]은 결과값 1이 나옵니다.
제가 아는 * 연산자의 개념과 조금달라서
이렇게 나오는 이유를 알고싶습니다.
Forums:
zippo와 zippo[0]은 주소값은 같지만 데이터
zippo와 zippo[0]은 주소값은 같지만 데이터 타입이 서로 다릅니다.
zippo는 pointer to array[2] of int, zippo[0]은 pointer to int
%p로 찍어봤을때 주소값이 같게 나온다고 두개가 같다고 생각하면 안됩니다.
배열이거나 혹은 구조체일 경우에는 동일한 주소임에도 여러개의 데이터 타입을 가질 수가 있습니다.
항상!!!! 데이터 타입을 확인하는 습관을 들입시다.
그리고 *zippo는 zippo[0]과 동치이고
*zippo[0] 은 zippo[0][0]과 동치입니다.
댓글 달기