안녕하세요 길벗수험서 운영팀입니다.
먼저 여기서는 포인터 변수가 배열로 사용되었습니다.
* 예를들어 a[5]의 변수명 a는 배열의 시작인 a[0]을 가리키는 포인터 변수 입니다.
* a는 &a[0]과 같으며, *a은 a[0]과 같습니다.
문자열(char[] 또는 char*)은 각 문자 하나하나가 배열의 각 요소에 저장되는 형식이죠.
때문에 str="KOREA"; 는 아래와 같은 방식으로 이해하셔야 합니다.
str = { 'K', 'O', 'R', 'E', 'A' };
이렇게 말이죠.
배열 자체에 저장되어야 하는 형태이니 *str 즉 str[0]에는 한 글자인 'K'밖에 들어갈 수 없으니, 전체 배열 형태인 배열명 str을 적어주는 것입니다.
char *str;
str = "KOREA";
는
char *str = "KOREA";
와 동일하며,
char str[] = "KOREA";
로도 바꿔쓸 수 있습니다.
문자열을 배열로 사용하는 방식은 일종의 약속이라, 원리라고 설명드릴 수 있는 것이 별로 없네요.
printf 또한 마찬가지입니다.
출력형식을 %s 로 하는 경우 해당 문자열(배열!)의 변수명(주소값이 되겠죠)을 적어줘야합니다.
이 경우 자동으로 해당 주소값을 가진 배열에 있는 모든 문자열을 출력하게 되죠.
%s 출력서식 자체가 주소값을 받아야 하기 때문에 *str을 적으면 에러가 발생합니다.
행복한 하루되세요 :)
-
관리자2019-05-14 10:50:34
안녕하세요 길벗수험서 운영팀입니다.
먼저 여기서는 포인터 변수가 배열로 사용되었습니다.
* 예를들어 a[5]의 변수명 a는 배열의 시작인 a[0]을 가리키는 포인터 변수 입니다.
* a는 &a[0]과 같으며, *a은 a[0]과 같습니다.
문자열(char[] 또는 char*)은 각 문자 하나하나가 배열의 각 요소에 저장되는 형식이죠.
때문에 str="KOREA"; 는 아래와 같은 방식으로 이해하셔야 합니다.
str = { 'K', 'O', 'R', 'E', 'A' };
이렇게 말이죠.
배열 자체에 저장되어야 하는 형태이니 *str 즉 str[0]에는 한 글자인 'K'밖에 들어갈 수 없으니, 전체 배열 형태인 배열명 str을 적어주는 것입니다.
char *str;
str = "KOREA";
는
char *str = "KOREA";
와 동일하며,
char str[] = "KOREA";
로도 바꿔쓸 수 있습니다.
문자열을 배열로 사용하는 방식은 일종의 약속이라, 원리라고 설명드릴 수 있는 것이 별로 없네요.
printf 또한 마찬가지입니다.
출력형식을 %s 로 하는 경우 해당 문자열(배열!)의 변수명(주소값이 되겠죠)을 적어줘야합니다.
이 경우 자동으로 해당 주소값을 가진 배열에 있는 모든 문자열을 출력하게 되죠.
%s 출력서식 자체가 주소값을 받아야 하기 때문에 *str을 적으면 에러가 발생합니다.
행복한 하루되세요 :)