61.2 함수 질문
, 이 동욱님이 작성안녕하세요
61.2의 예제 return_pointer.c 에서는 printf("%d\n", *numPtr); 처럼 출력할때
numPtr에 역참조를 해줬는데
예제 return_string.c 에서는 printf("%s\n", s1); 와 같이 출력할때 역참조를 하지
않고 역참조를 넣을경우 값이 나오지를 않습니다
포인터는 메모리의 주소만 저장되어있음으로 내부의 값을 가져올때는 역참조를
해야된다고 봤는데 왜 다른지 알수있을까요
Re: 61.2 함수 질문
, 도장_ 관리자님이 작성숫자는 값을 받아서 출력하지만, 문자열 리터럴은 주소를 받아서 출력합니다.
s1이 문자열이라면 s1은 문자열이 시작하는 첫 번째 문자의 주소를 가리킵니다.
흔히 문자열의 주소를 가리킨다고 하죠. s1과 s1[0]의 주소는 같습니다. 이는 C 언어에서 문자열 리터럴의 주소로 별도의 값이 아니라 첫 번째 문자가 저장된 주소를 가리키기 때문입니다.
%s로 문자열 리터럴을 출력할 때는 s1이 주소여야 합니다. 포인터는 주소이므로 이에 부합합니다. *s1처럼 역참조를 하면 주소가 아니라서 안 됩니다.