|
아래와 같은 문자열이 있을때
char *x="C++ Builder programing";
printf("%p\n",*x);
printf("%p\n",x);
printf("%c\n",*x);
printf("%s\n",x);
printf("%s\n",*x); //error
결과값의 출력이 첫번째는 00000043('C'의 hexadecimal값)
두번째는 문자열의 처음 주소(004020a4)가 출력되었고
세번째는 C, 네번째는 문자열 전부가 출력되었습니다.
너무나 당연한 얘기겠죠?
제가 궁금한건 네번째,다섯번째의 차이입니다.
x는 문자열의 시작주소를 가리킵니다(여기서는 004020a4)
다섯번째 경우에 출력포맷을 string으로 했을때
해당되는 문자열의 첫번째 한문자를 출력하지 않고
error로 빠지게 되는 이유를 알고 싶습니다.
%c는 한문자 출력
%s는 문자열 출력이라는 문법의 심오한 뜻을 알고 싶군요.
왜 %s로는 한문자는 출력을 못할까요?
또한 네번째 경우는 문자열의 처음 가리키는 주소만 알면 문자열 전체를 출력하네요.
제가 너무 당연한 문법을 왜 그러냐고 묻고 있는 건가요?
고수님의 답변 부탁드립니다.
|