C언어 문자열배열에 관해서 초보가 질문좀하겠습니다 ㅠ
돋가이
#include stdio.hint main (void)
{
char* arr[3]={
fervernt-lecture,TCP/IP,Socket Prgoramming
};printf(%s ,arr[0]);
printf(%s,arr[1]);
printf(%s,arr[2]);return 0;
}네; 다름이아니라 지금 문자열배열 ,문자열상수 이런거 배우고있는 초보입니다.문자열상수가 메모리에 저장되는 순간 주소값을 반환한다.이 사실은 알겠습니다.그래서 fervent-lecture 이렇게 저장되는 순간 arr[0]에 fervent-lecture의 주소값이 들어가는 것은 알겠어요;그래서 만약에 이걸 %d로 출력했다면 그거에 대한 주소값이 나올거잖아요? 그건 잘 이해하겠어요 ㅇㅇ근데 제가 궁금한건 %s에요.어떻게 단순히 그냥 주소값 0x****이런거 갖고있는 포인터를 %s로 출력하면 문자열이 나오는 것인지 궁금합니다 ㅠ도대체어떤 원리로 %d로 부르면 주소값을 내어놓는 그냥 포인터가 , %s로 부르면 문자열이 나오는 건가요?%s가 문자열 서식문자라는것은 알고있습니당 ㅠ
-
겨레
헉 주소값이란 말 말고 데이터값이란 말을 추가로들으니까 확 와닿네요. 님이 유추한게 맞는 것 같고 이해도 잘됩니다 ㄷㄷ 감사합니다!! ^^
-
CreamyGirl
문자열은 컴파일시 주소값을 반환해줍니다.. 그점을 봤을때.. 유추할수있는 사실하나는..
%s라는 서식문자는 주소값을 참조하여 데이터값을 가져온다.. 라는게 아닐까요?
사실상 강좌나 강의들보면 %s는 정확히 어떻게 데이터를 가져오고 그 이유를 설명해주는건 거의 없습니다..
단지 문자열 서식문자라고만 할뿐이죠..
개발자가 아니라 유추할뿐이지만.. %s라는 녀석은 아마도 입력된 배열이나 포인터 주소값으로 찾아가 그 데이터를 출력할수있도록 해주는 역할을