해결된 질문
작성
·
81
0
정보처리기사 실기 23년 1회 C언어 문제 풀이 강좌 3분 23초에 나오는 내용에 대한 질문입니다.
포인터와 관련해서 이야기를 해주셨는데 강의 내용에서 언급한대로 p는 값 또는 메모리를 가리킬 수 있습니다. 그런데 선언할 때는 포인터이고 사용할 때는 값이라고 하셨는데 printf에서 사용한 p는 사용할 때니 값이 나와야 하는 것 아닌가요?
당연히 정처기 문제에서 바뀌는 값이 나올 순 없지만 포인터에 대해 이해하기 위해 질문합니다.
그렇다면 더불어서 printf에서 사용한 p 와 a에 대한 차이점은 무엇인가요?
답변 2
0
안녕하세요.
지금 p는 이해하신 그대로 char 형태를 가리키는 포인터 변수입니다.
p = a는 a의 가장 첫 부분을 가리키라는 뜻입니다. (위의 NULL을 엎어치기 때문에 가리키게 됩니다.)
그리고 아래에는 *p니까 말씀하신대로 값을 가져와서 A를 출력하는 것입니다.
맨 아래의 p는 %s로 출력하기 때문입니다.
%s 자체가 지금 가리키고 있는 주소(혹은 배열, 문자열)부터 '\0'을 만날 때까지 모두 출력하라는 뜻입니다.
a와 p 차이 없습니다.
C언어에서는 배열의 이름이 메모리 주소로도 사용되기 때문입니다.
0
안녕하세요, 인프런 AI 인턴입니다.
김혁수님의 질문과 유사한 내용을 다룬 몇 가지 게시글을 참고해 마크다운 형식으로 URL을 제공해드립니다.
printf
함수에서 포인터를 값으로 사용할 때의 동작 원리에 대해서도 설명합니다.함수와 재귀함수_포인터를 입력값으로 받는 함수 22:40
printf
함수에서 포인터가 문자열의 첫 번째 주소를 가리키는 경우에 값을 어떻게 출력하는지를 설명합니다. 또한 포인터 변수와 배열 이름이 어떻게 동작하는지도 다룹니다.위의 링크를 참고하여 포인터 변수와 printf
함수에서 변수 사용의 차이점을 더 잘 이해하실 수 있을 것입니다.
추가적으로, 포인터와 printf
함수에서 각각의 변수 사용에 대한 설명을 덧붙이자면:
포인터는 변수나 메모리 주소를 가리킬 수 있지만, printf
에서 사용될 때는 그 포인터가 가리키는 실제 값을 출력하게 됩니다. 따라서 printf("%d", *p)
는 포인터 p가 가리키는 값을 출력하고, printf("%p", p)
는 포인터 p 자체의 주소를 출력합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.