문자열 포인터요 ㅠㅠ.
캔서
2023.04.01
질문 제목 : 문자열 포인터출력이 안됩니다 ㅠ.질문 내용 :
#include stdio.h
void main(void)
{
char *p = hello;
printf(%s\n, *p);
}
상수 문자열을 포인터에 넣을수 있는거 아닌가요??...
저렇게 포인터에 넣고 출력시켜보면 에러나네요..
%c로 출력하면 정상적이던데.. 왜 %s로 하면 안되나요?
------ printf(%s\n, p); 로 바꾸니까 되긴 되네요. *를 안붙이면 주소값만 printf 함수로 보내지는 것 아닌가요??
%s를 출력할 때에는 문자열의 주소값이 필요해서 그런 것 인가요?
아, 덧붙여서 상수들은 주소값을 알아낼 수 없나요?(문자열 제외)
예를 들어, 10의 주소값 이런식으로요..
-
이솔
포인터가 사용 가능한 영역을 가르키고 있는지 생각해 봅니다.
-
샤인
질문에 답이 있는데요? ㅋㅋ
\%s를 출력할 때에는 문자열의 주소값이 필요해서 그런 것 인가요?\
네.. %s 즉, 문자열을 출력할 때에는 문자열의 주소값이 필요해서 그런 겁니다. ^-^
*p로 하게되면 *p가 가리키는 문자의 ASCII 코드의 값이 주소로 되어서 segmentation fault라는 에러가 발생하게 될 겁니다.