|
문자포인터와 숫자포인터의 차이점 질문이요.
책에서 예문을 공부하던 도중에 문자열 포인터에 대한 예문을
보았습니다.
그 중에서
//문자열 포인터예문
#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가 찍히더군요.
이유가 궁금해요,
대충은 짐작이 가지만 정확히 알고 싶어요
꼭좀 지적해 주세요.
그럼
|