서영재 님이 쓰신 글 :
: #include <stdio.h>
:
: int main(void)
: {
: char *p="korea";
: char k='a';
: printf("%s\n%c",p,k);
: printf("\n%p === %p",p,k);
:
:
: return 0;
: }
:
일단 char *p = "Korea"; 하면
"Korea"라는 데이터는 데이터 세그먼트에 잡힙니다.
그리고 p라는 포인터변수는 스택에 잡히겠지요...
그리고 p라는 변수가 있는 곳을 얻고 싶으면 &p하셔야 됩니다.
마찬가지로 k라는 변수도 스택에 잡힙니다..
printf("%p %p". p,k)에서 그냥 p하면 이것은 "Korea"라는 데이터가 들어있는 곳의
주소를 이야기합니다. 그리고 k에 들어 있는 값이 'a'이므로 값이 %p로 출력하면
화면에 61이 나오는 겁니다...
설명이 잘됐는지 모르겠습니다만,,,
char *p; char k;
에서 p는 포인터변수이고 &p는 이 포인터변수 p가 있는 곳의 주소를 나타냅니다.
만약 p가 가리키는 주소를 얻고 싶으면 그냥 p하면 됩니다.
k는 그냥 변수이고 &k는 변수가 있는 곳의 주소입니다.
|