작성
·
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" 프로젝트를 빌드했습니다. - 실패
이런 오류가 뜨면서 또 안되네요.
뭐가 문제일까요?