우선 실험을 해볼려고 이렇게 테스트를 해봤는데 어쨌든 결국 이랬는데도 의문이 안풀림.
int main()
{
char moon[100] = "moonjein";
int lee[100] = { 1,2,3,4,5 };
printf("%d ", moon);
printf("%x ", moon);
printf("%s ", moon);
printf(" ");
printf("%d ", lee);
printf("%x ", lee);
printf("%s ", lee);
printf(" ");
printf("%d ", &lee);
printf("%x ", &lee);
printf("%s ", &lee);
}
(결과값)
5700032
56f9c0
moonjein
5699624
56f828
r
5699624
56f828
r
우선은 lee는 배열명이니까 이걸 출력한다는건 위와같이 주소 위치를 나타내고 %d, %x, %s 전부 첫번째 주소 위치를 나타낸것같음.
문제는 문자열 배열 moon인데 똑같은 방식이라면은 moon도 lee처럼 전부 주소값이 입력되어야 정상인것을
%d, %x는 주소를 나타내고 근데 또 %s는 주소안에 들어있는 moonjein을 출력함.
이러면은 결론은 문자열을 출력하는 %s 변환문자 자체에 기능이 있다는건데
제가 풀이한게 맞는 말인가요?
맞는말임 굿 ㅇㅅㅇㅋㅋㅋ
근데 ㄹㅇ 이해가 안되는게 %s 이거 뭔데 다른 변환문자는 다 주소를 출력하는데 ㅆㅂ 왜 이것만 주소 안의 문자열을 출력함?? "C언어 개발자가 이건 걍 이렇게 하자"하고 약속한거임???
printf에 문자열로 출력하라고 시켜놓고 왜 주소가 안냐오나 하고잇는 것임
ㅇㅋ 어느정도 대충 이해는 됐음 ㄱㅅ
string 도 결국엔 array 니까