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진수에 해당하는 값아닙니까요..
진짜 주소는 어떻게 되는거져;;
늅늅이 구제좀요...

1,3어떤값으로 출력됨?
하나는 주소값으로 출력되고 3번은 그 00000053이었던가..
str이라는 변수가 메모리에 할당되고 그안에 String이라는 문자열의 주소가 담겨짐(S의주소) str의 주소 != String의 주소
근데 c++을 안해봐서 (int*)의 역할을 모르겠음 &str 하면 변수의 주소값 가져올수있는데 이걸로 테스트해보삼
3번이 53이 나온거보면 1번은 S의 주소일거같은데
3번은 그냥 S 가져올걸 int*로 형변환만 해줘서 주소는 숫자니까 숫자로 가져온게아닐까
cout이 기본적으로 문자열은 c에서 %s로 가져오는것처럼 행동하는듯