혹시 님이 의도 하신건..
변수k의 'a'가 "korea"에 있는 'a'를 가르키는걸로 할려구 하신모양인데...
잘못된거 같네요..
저두 초보라 잘모르지만...
%p는 포인터주소를 출력하는거죠..
변수 선언을 포인터형으로 선언 안했으니
변수k에 'a'의 아스키코드 61번이 포인터 형식으로 0061로 출력된거같군요.
그럼...
#include <stdio.h>
int main(void)
{
char *p="korea";
printf("%s\n%c",p,*(p+4)); // p의 주소값에 4를 더한값을 가르킴
printf("\n%p === %p",p,p+4); // p의 주소를 4더한값을 출력
return 0;
}
혹시 이러면 의도하는거랑 비슷하나요?
멀 할라시는건지 몰라서.. ^^;
--------------------------------------
서영재 님이 쓰신 글 :
: #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;
: }
:
: 이렇게했습니다
: 결과는
:
: korea
: a
: 0056 === 0061
:
: -------------------------------------
: 질문입니다.
: 일단 char *p="korea"; 이렇게했습니다.
: 그렇담 메모리에선 6바이트를잡고(널문자포함) p에겐 첫번째주소를 넘겨주는것입니까?
: 그렇게되면 결과값엔 두번째 포인터주소는 "0062"가나와야정상인데 "0061"이 나와버립니다.
: 아시는분 답변부탁드리겠습니다.
:
: 그럼좋은하루 되세요
:
: ps. 혹시나해서 printf("\n%d === %d",&p,&k); 이렇게도 해봤는데...
: 8646 === 8645 이렇게 나와버리더군요...
|