| 우느님 |
ptr_ary[0] = "dog"; 를 수행하고 나면
컴퓨터는 메모리 어딘가에다가 dog 라는 문자열을 저장하고, 그 문자열의 첫번째 문자를 가리키도록 만듭니다. 즉, ptr_ary[0] 은 그 첫번째 문자를 가리키고 있는 것이죠. 또한, 그 첫번째 문자가 있는 곳의 주소가 저장되어 있다고 생각하시면 됩니다.
그래서 *ptr_ary[0] = 100 이 되는 겁니다. 'd'라는 문자는 아스키코드로 100입니다. 그래서 100이 출력된겁니다.
간단히 확인 하실수 있는 방법이 있는데, printf("%c", *ptr_ary[0]); 을 해보시면 문자 'd'가 출력된다는걸 확인할 수 있습니다.
*&ptr_ary[0]은 ptr_ary[0]이 가리키고 있는 곳의 주소라고 해석할 수 있습니다.
SKTCTO님의 컴퓨터에서는 4282416라는 메모리 주소에다가 'd'라는 문자를 저장했네요.
그러면 4282417에 'o'라는 문자가 저장되어있고, 4282418에 'g'라는 문자가 저장되어 있겠네요.
이것은 printf("%c,%c,%c\n",*ptr_ary[0], *(ptr_ary[0]+1),*(ptr_ary[0]+2)); 을 통해서 확인 할 수 있습니다.
이 메모리 주소는 컴퓨터마다 다르고, 같은 컴퓨터로 코딩하더라도 실행할때 마다 달라질 수 있습니다.
ptr_ary[0]은 위에서 말했다 싶이 문자열의 첫번째 문자가 있는 곳의 주소를 나타내고 있습니다. |
2012/04/02 |
|