Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[241] Re:[질문] char *p="korea" 말인가요
동구 [dong9u] 3331 읽음    2002-01-24 22:54
혹시 님이 의도 하신건..
변수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 이렇게 나와버리더군요...

+ -

관련 글 리스트
240 [질문] char *p="korea"; <- 이렇게했을때... 서영재 3494 2002/01/24
247     Re:[질문] char *p= 이돈진 3170 2002/01/28
241     Re:[질문] char *p="korea" 말인가요 동구 3331 2002/01/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.