• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

[2:45] &c 출력값이 이상하게 나오는 이유 질문드립니다.

22.05.18 22:46 작성 조회수 235

0

int main()

{

    char c = 'a';

    void *ptr = nullptr;

 

    ptr = &c;

 

    cout << &c << " " << ptr << endl;

    return 0;

}

 

앞에서 설명하셨다고 하면서 넘어가셨지만 한 번 더 &c의 출력값이 이상하게 나오는 이유를 알려주실수 있을까요?

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2022.05.19

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

강민철님의 프로필

강민철

2022.05.20

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

}

 

감사합니다