|
#include<stdio.h>
main()
{
char *b ;
char a[] = "sin dj";
int i;
b = "SIN DJ";
for(i=0; i<6;i++)
printf("a[%d] =========> %c \n",i,a[i]);
for(i=0; i<6;i++)
printf("*(b+%d) =======> %c \n",i,*(b+i));
}
결과....
a[0] =============> s
a[1] =============> i
a[2] =============> n
a[3] =============>
a[4] =============> d
a[5] =============> j
*(b+0) ===========> S
*(b+1) ===========> I
*(b+2) ===========> N
*(b+3) ===========>
*(b+4) ===========> D
*(b+5) ===========> J
물론 b 가 주소를 저장하는 변수라는 것은 알고 있습니다. 다만. 제가 궁금한것은
"SIN DJ"라는 스트링이 메모리에 저장되려면 공간이 있어야 하는데....
char *b; 로는 메모리에 저장공간 할당은 이루어 진것이 아니죠...
헌데... b="SIN DJ"; 라는 구문이 먹더군요....
다시 생각해 보면 메모리에 저장공간이 할당되고 스트링을 저장한 후
첫 주소를 b에 저장 시킨다고 밖에
생각이 안되는 군요... 전 이점이 궁금하다고 질문을 드린 건데요..
거기다가 자동할당이 가능하다면....
char *b;
b= "abcdedg";
....
b = "abc";
...
라고 하면.... 메모리에 할당된 공간이 자동으로 줄어드나요? 낭비가 일어나나요?
=ㅅ= 넘 궁금해서 ....
산적 님이 쓰신 글 :
: : char *String;
: :
: : String = "JIN SU";
: :
: :
: 위에서 String은 포인터로 선언되서 즉 주소값을 가지는 변수죠...
: 그래서 "JIN SU"값을 가지는 것이 아니라. 주소값을 갖게 되는 것이죠...
:
: 참고가 되셨기를 바랍니다.
:
: - 산적 -
|