머라고 설명해야 할지... 저도 끈이 짧네요.
%p 는 주소를 표기하는데 사용합니다.
%d 는 값을 표기하는데 사용합니다.
사용예를 잠깐 들어 보면...
int temp;
temp = 10;
printf("%p",&temp);
|
주소죠.
printf("%d",temp);
|
아. 뭐라해야할지. 암튼 주소는 아니고 명칭...ㅠ.ㅠ
이게 맞는 거겠죠...
그럼 예를 잠깐 볼까요....
printf("zippo = %p, zippo[0] = %p, &zippo[0][0] = %p\n",zippo, zippo[0], &zippo[0][0]);
| | |
| | 주소
| 주소
주소
주소니까 %p로 받는게 맞겠죠...
따라서 %d 로 받으면 이상한 값이 나오는게 당연하겠죠.. 그렇다면 어떻게 해야 할까요...
printf("zippo = %d, zippo[0] = %d, &zippo[0][0] = %d\n",**zippo, *zippo[0], zippo[0][0]);
| | |
| | 명칭
| 명칭
명칭
자 이렇게 됩니다.
이걸 이해하기 위해서 배열에서 주소를 나타내는 경우와 명칭이 되는 경우를 알아야 하겟죠...
예를 들어...
int temp[3];
이라고 하면...
명칭 주소
temp[0] &temp[0],temp
temp[1] &temp[1],temp+1
temp[2] &temp{2],temp+2
int temp[2][2];
명칭 주소
temp[0][0] &temp[0][0],temp[0] , *temp
temp[0][1] &temp[0][1],temp[0]+1, *temp + 1
temp[1][0] &temp[1][0],temp[1] , *temp + 2
temp[1][1] &temp[1][1],temp[1]+1 , *temp + 3
이정도 되고... 여기서 특히 temp 는 배열 temp[2][2] 의 시작 주소를 나타냅니다.
temp 이중 포인터 라고도 하지요...
설명이 됬는지... 매우 부족할지 모르니 책에서 배열에 관한 부분을 찾아서 읽어보세요.
잘못된 점이 있다면 지적 바랍니다.
|