char *str="School";
1. cout<<"(int*) str : "<<(int*) str<<endl;
2. cout<<"str : "<<str<<endl;
3. cout<<"(int*) str : "<<(int*) *str<<endl;
4. cout<<"*str : "<<*str<<endl;
위 소스에서 1번은 str의 문자열의 주소를 출력하는 거고 2번은 그대로 문자열 출력
3번은 문자열의 첫문자인 S의 주소 4번은 출력해보니 첫문자인 S가 나왔는데요
전 1번과 3번의 주소가 동일할거라 생각했는데 다른 주소가 나오네요. 이유가 뭣 땜시죠? str은 문자열의 첫번째 문자의 주소를 받지않습니까..
그럼 3번과 동일한 주소가 출력될거라 생각했는데 잘이해가 가질않습니다. 제가 어디를 잘못 이해하고 있는건가요
-------여기까지가 어제 질문이었는데,
1번과 3번이 다른이유가 3번은 *str에 해당하는 문자 즉 S의 아스키코드에서 16진수로 나타낸값이 출력된다는걸 어떤형님이 갈켜줘서 알게되었는데요
그런데 또 의문점이 책에서 출력에서 int* 형으로 변환해서 출력하는것은 주소로 출력하는 것이다 라고 되어있습니다. 포인터니까 주소로 형변환 해서 출력하는것이 논리에도 맞구요. 그리고 주소도 16진수 값으로 나타내죠. 그런데 S의 16진수에 해당하는 값이 주소라고 할 수있나요? 아스키코드표를 보니 S에 해당하는 16진수값은 0x53 인데 이 값이 주소는 아니지않나여? 그냥 S의 16진수에 해당하는 값아닙니까요..
진짜 주소는 어떻게 되는거져;;
늅늅이 구제좀요...
조사식 찍어보니 3번은 오류나는구만. 애초에 안되는 찍어보면 답이 나오는 걸.