2011-11-14 3 views
0

나는 C를 배우고 있는데, 이제는 포인터에 혼란을 느낀다. 내 질문은, 왜 printf ("% d", * (i)); 다차원 배열을 사용하는 동안 주소 대신 요소를 반환 ??C에서 포인터에 대한 혼란

#include <stdio.h> 

int main() 
{ 
    int i[2][2] = {{1,8},{2,9},{3, 4}}; 
    //int i[2] = {1,2,3}; 
    printf("%d", *(i)); 
    printf("\n%d", i); 
} 
+1

코드에서 'i'는 길이가 2이지만 초기화 프로그램에는 3 개의 요소가 있음에 유의하십시오. –

답변

6

음 **, 그것은 배열의 배열은, 그래서 다차원 배열은 다음과 같이 쓸 수 있기 때문에 색인/한 번 역 참조 당신에게 포인터로 붕괴 배열, ...

+0

네,이 기사의 이미지는 더 자세히 설명해야합니다 : http://c-faq.com/~scs/cclass/int/sx9b.html – dbrank0

+1

@ dbrank0 : 링크하려는 페이지는 "시뮬레이션 된 다차원 배열 "을 여러 수준의 포인터 배열을 통해 전달합니다. 이것은 여기에있는 "일반적인"다차원 배열과는 다른 것입니다. 따라서 그림은이 질문에 맞지 않습니다. –

+0

참. 댓글을 잊어 버려라. 이미지가 잘못되었습니다. – dbrank0

1

을 제공합니다 내가 그래서 * (i)는 첫 번째 배열의 주소를 제공합니다.

관련 문제