강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

chobocorder님의 프로필 이미지
chobocorder

작성한 질문수

홍정모의 따라하며 배우는 C++

6.18 보이드 포인터

[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

chobocorder님의 프로필 이미지
chobocorder
질문자

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

&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;

}

 

chobocorder님의 프로필 이미지
chobocorder
질문자

감사합니다

chobocorder님의 프로필 이미지
chobocorder

작성한 질문수

질문하기