#include <stdio.h>
int 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가 문자열 서식문자라는것은 알고있습니당 ㅠ
정확하게 말하면 문자열상수는 "메모리에 저장된 문자열의 시작 주소값" 이고, %d는 숫자를 출력하자고 약속되어 있어서 [주소]가 출력되는거고, %s는 해당 주소로가서 다음번지로 이동하면서 NULL값을 만날때까지 문자열로 출력하자고 약속되어 있어서 [문자열]이 출력되는거야
ㅇㅇ// 와;; 즉답 감사합니다 ㅠㅠ 단순히 주소값을 포함하고있는 기능 외에 뭔가 다른 기능도 있는건가요 ? 포인터는?
어떤 원리인지 궁금하면 printf함수를 뜯어봐야지, 근데 초보면 그냥 약속되 있는 거라고 생각하고 다음 진도 나가는게 맞다.
ㅇㅇ// 아!!! 깨달았다 ㅇㅇㅇ 아 알겠다 ㅇㅇ 헉 감사감사합니다. 그러니까 %d로하면 그냥 숫자를 출력하는거니까 단순히 주소값을 나오는거고 ,%s 로 출력하면 해당 번지에 있는 데이터 자체(문자열)을 뽑아내는거군여?? 맞나여 ?? ㄷㄷ
엌ㅋㅋㅋ맛나욬ㅋㅋㅋㅋㅋ
넵 아랫 덧글만 답글 달아주세요 ㅠㅠ 진짜감사합니당; ㅠㅠ
포인터는 그냥 주소라고 생각하면 되, 기능은 포인터를 활용한거지 포인터가 기능을 가지고 있는건 ㄴㄴ
아 글쿤요 ㅇㅇ 감사합니당!! 이해제대로하고갑니다 ㅠ 캡쳐캡쳐