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

C++빌더 Q&A
C++Builder Programming Q&A
[6058] Re:문자포인터와 숫자포인터의 차이점 질문이요
박세용 [] 2369 읽음    2001-03-12 23:16
님께서 원하는 답이 cout에 대한 것이 아니라고는 하지만
질문에서 나오는 현상은 cout 객체의 operator 정의 때문에
그런 결과가 나오는 것입니다.

char *(char pointer)의 경우에는
ostream_type& operator<<(basic_streambuf<char_type, traits> *sb);
의 정의에 따라서 문자열을 출력하게 되는 것이고

int *(int pointor)의 경우에는
ostream_type& operator<<(const void *p);
의 정의에 따라서 포인터값을 출력하게 됩니다.
int pointer가 void pointer로 casting이 되는겁니다.

참고하세요.

전승호 님이 쓰신 글 :
: 문자포인터와 숫자포인터의 차이점 질문이요.
: 책에서 예문을 공부하던 도중에 문자열 포인터에 대한 예문을
: 보았습니다.
: 그 중에서
: //문자열 포인터예문
: #include <iostream.h>
: void main()
: {
:     char b[]="abcde";
:     char *pb;
:     pb=b;
:     cout << "b[] = " << b << '\n';
:     cout << "ba  = " << pb+2 << '\n';
: }
: 의 문을 보았습니다.
: 그런데 이상한건
:
: //숫자형 포인터예문
: #include <iostream.h>
: void main()
: {
:     int a[]={10,20,30,40,50};
:     int *pa;
:     pa=a;
:     cout << "a[] = " << a << '\n';
:     cout << "pa  = " << (pa+2) << '\n';
: }
:
: 와 같은 경우에는 a를 숫자형 배열로 선언해놓고 a값을
: 숫자형포인터변수인 pa에 넣은다음 a와 (pa+2)를 출력
: 하면 물론 저의 예상대로 첫번째의 배열주소와 세번째의
: 배열주소가 찍히더군요.
: 그런데 이상하게 위의 문자열배열포인터 문장에서는
: b를 문자형 배열로 선언해놓고 b값을 문자형포인터변수인
: pb에 넣은다음 b와 pb를 출력하면 저의 생각엔 문자열배열
: b[0]의 주소와 그값을 넘겨받은 포인터변수 pb값도 b[0]의
: 주소가 찍힐것만 같았는데 이상하게 실제로는 저의 생각과
: 는 전혀 다르게 문자열이 모두 찍히더군요.
: 제가 원하는 답변은 cout객체에 관한 것이 아닙니다.
: 왜 숫자형에서는 배열의 이름을 출력하면 배열의 첫번쨰 요소의
: 주소가 출력되는데 char형에서는 무엇때문에 배열의 이름을 출력
: 하면 모든 배열의 문자가 출력되는가 입니다.
: 그리고 그뿐만이 아니라 pb+2같이 출력하면 abcde가 아니라
: cde가 찍히더군요.
: 이유가 궁금해요,
: 대충은 짐작이 가지만 정확히 알고 싶어요
: 꼭좀 지적해 주세요.
: 그럼


:

+ -

관련 글 리스트
6047 문자포인터와 숫자포인터의 차이점 질문이요 전승호 2617 2001/03/12
6058     Re:문자포인터와 숫자포인터의 차이점 질문이요 박세용 2369 2001/03/12
6056     Re:문자포인터와 숫자포인터의 차이점 질문이요 한꼬맹이 2560 2001/03/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.