책 내용 질문하기
Section007 C언어의 포인터와 배열 - 기출 따라잡기 중 문제1번 질문드립니다.
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
83
조회수
175
작성일
2017-09-25
작성자
탈퇴*원
첨부파일

p.83의 기출 따라잡기 중 문제1번입니다.

#include

main()

{

char *str; ------①

str = "KOREA"; ------②

printf("%8.3/n", str); -----③

}

①에서 str은 포인터 변수임을 선언하고

②에서 str에 저장된 값은 "KOREA"가 아니라 "KOREA"가 저장된 주소의 값인데

③에서 출력되는 것이 "KOR"이면 str이 아니라 *str이 아닌가 하는 생각이 들어 질문 올립니다.

답변
2017-09-26 09:31:52

안녕하세요.

문자열의 경우 배열처럼 처리되므로 포인터를 사용하지 않고 변수명만 작성하면 해당 문자열이 저장된 위치의 시작 부분을 인식하여 자동으로 전체 값을 반환합니다. 하지만 개별적인 위치의 값을 반환하려고 할 때는 포인터를 사용하여 개별적인 위치를 지정해 주어야 합니다.

*str[0] 첫 번째 값 "K"
*str[1] 첫 번째 값 "O"
*str[2] 첫 번째 값 "R"
*str[3] 첫 번째 값 "E"
*str[4] 첫 번째 값 "A"
와 같이 구분됩니다.

str을 하면 "KOREA" 전체가 반환됩니다.


오늘도 즐거운 하루 되세요.

  • *
    2017-09-26 09:31:52

    안녕하세요.

    문자열의 경우 배열처럼 처리되므로 포인터를 사용하지 않고 변수명만 작성하면 해당 문자열이 저장된 위치의 시작 부분을 인식하여 자동으로 전체 값을 반환합니다. 하지만 개별적인 위치의 값을 반환하려고 할 때는 포인터를 사용하여 개별적인 위치를 지정해 주어야 합니다.

    *str[0] 첫 번째 값 "K"
    *str[1] 첫 번째 값 "O"
    *str[2] 첫 번째 값 "R"
    *str[3] 첫 번째 값 "E"
    *str[4] 첫 번째 값 "A"
    와 같이 구분됩니다.

    str을 하면 "KOREA" 전체가 반환됩니다.


    오늘도 즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.