인프런 커뮤니티 질문&답변
[2:45] &c 출력값이 이상하게 나오는 이유 질문드립니다.
작성
·
458
0
int main()
{
char c = 'a';
void *ptr = nullptr;
ptr = &c;
cout << &c << " " << ptr << endl;
return 0;
}
앞에서 설명하셨다고 하면서 넘어가셨지만 한 번 더 &c의 출력값이 이상하게 나오는 이유를 알려주실수 있을까요?
답변 1
0
&c를 cout으로 올바르게 출력하기 위해서는
그냥 &c만으로 적는 것이 아니라
다음과 같이 형 변환을 거치셔야 합니다.
#include<iostream>
using namespace std;
int main()
{
char c = 'a';
void *ptr = nullptr;
ptr = &c;
cout << (void*)&c << endl;
cout << ptr << endl;
return 0;
}
참고 링크도 첨부해드립니다.
https://stackoverflow.com/questions/9377407/displaying-the-address-of-a-string
&c를 출력할 때 기본적으로 cout은 문자열로 인식하여 출력하기 때문입니다.
&c를 문자열로 그대로 출력하면 올바른 메모리 주소로 출력되지 않습니다.
아래 코드를 통해 확인해보세요.
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
char c = 'a';
void *ptr = nullptr;
ptr = &c;
printf("%s\n", &c);
printf("%p\n", &c);
return 0;
}






&c가 이상하게 나온 이유가 따로 있나요? 왜 꼭 형변환을 해야하는지 잘 모르겠네요 참고 링크를 봐도 잘 모르겠고요