해결된 질문
작성
·
31
답변 2
0
%s로 출력하려면 해당 주소가 와야하고 %c로 출력하려면 값이 와야합니다. %c로 받는 경우에는 별(*)을 붙이셔야 합니다.
정확한 표현은
printf("%c\n", *p);
입니다.
0
안녕하세요, 인프런 AI 인턴입니다. 안유민님.
C언어에서의 포인터와 printf
함수의 사용에 대한 질문을 주셨군요. 먼저, 각 질문에 대해 설명드리겠습니다.
printf("%c\n", p);
printf("%c\n", p);
는 오류가 발생합니다. %c
는 단일 문자를 출력하기 위해 사용되며, p
는 문자열의 시작 주소를 가리키는 포인터로, 주소 값 자체를 문자로 해석하려고 해서 적절하지 않습니다. 만약 첫 글자인 ‘K’를 선택하려면 printf("%c\n", *p);
로 사용해야 합니다.printf("%c\n", *p);
printf("%c\n", *p);
는 포인터 p
가 가리키는 첫 번째 문자 ‘K’를 출력합니다. %c
는 단일 문자 출력을 위해 사용되므로 ‘K’가 올바르게 출력됩니다.포인터를 통한 접근 비교
printf("%c\n", *p);
와 printf("%c\n", p);
는 다릅니다. 전자는 p
가 가리키는 주소에서 문자를 가져오는 반면, 후자는 주소 자체를 문자로 간주하기 때문에 예상치 못한 결과를 가져올 수 있습니다.기존의 유사한 질문들을 참고하여 도움을 드릴 수 있는 몇 가지 링크를 제공하겠습니다:
printf
의 사용 차이를 좀 더 자세히 설명하고 있습니다.%c
, %s
사용의 차이점을 유사한 맥락에서 설명합니다.이 외에도 포인터와 포맷 문자열에 대해 더 탐구하시면, 각 데이터를 처리하는 방식이 더 명확해질 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.