강의

멘토링

로드맵

Inflearn brand logo image

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

혀기님의 프로필 이미지
혀기

작성한 질문수

C 프로그래밍 - 입문부터 게임 개발까지

미션맨(포인터)의 등장

안녕하세요 7장 포인터에 관해 질문드립니다.

작성

·

11

0

7-2강의나 7-3강의 에서

printf("철수네 주소 : %d",&철수);

와같은 구문이 실행이 안되는데 어떻게 된걸까요?

이게 옛날 강의다 보니 현재 비쥬얼 스튜디오 2022에서는 이런식으로 작동하지 않는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 혀기님께서 질문해 주신 내용을 바탕으로, 현재 비주얼 스튜디오 2022 환경에서 발생할 수 있는 문제점을 설명드리겠습니다.

C언어에서 printf 함수를 사용할 때, 포인터의 주소를 출력하기 위해 %d 형식을 사용하면 경고 또는 오류가 발생할 수 있습니다. 이는 %d가 일반적으로 정수(int)를 출력하기 위해 사용되기 때문입니다. 포인터의 주소를 출력하려면 %p를 사용하셔야 합니다.

예를 들어, 다음과 같이 수정하셔야 합니다:

printf("철수네 주소 : %p\n", (void*)&철수);

여기서는 (void*) 캐스팅을 통해 포인터 타입을 void*로 변환한 후 출력을 시도합니다. 이는 C 표준 라이브러리에서 포인터 출력을 안전하게 하기 위한 일반적인 방법입니다.

이 방법을 사용하면 Visual Studio 2022에서도 문제없이 프로그램을 실행하고 주소 값을 확인하실 수 있습니다.

아래에 유사한 질문에 대한 참고 링크를 첨부하니, 더 자세한 내용을 알고 싶으시다면 확인해 보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

혀기님의 프로필 이미지
혀기
질문자

그렇게 해봤는데

1>pointer..c

1>conditon.obj : error LNK2005: main이(가) pointer..obj에 이미 정의되어 있습니다.

1>C:\Users\USER\source\repos\NadoCoding\x64\Debug\NadoCoding.exe : fatal error LNK1169: 여러 번 정의된 기호가 있습니다.

1>"NadoCoding.vcxproj" 프로젝트를 빌드했습니다. - 실패

 

이런 오류가 뜨면서 또 안되네요.

뭐가 문제일까요?

혀기님의 프로필 이미지
혀기

작성한 질문수

질문하기