none
C언어. 포인터 변수 RRS feed

  • 질문

  • 안녕하세요 스튜디오로 공부하던 중에 실행이 안 되는게 있어서 질문드립니다.

    #include<stdio.h>
    void main() {
    char *ptr = "apple";
    puts(ptr);
    }

    이렇게 코드를 짰는데

    '초기화 중':'const char에서 char*으로 변환할 수 없습니다.

    const char * 형식의 값을 사용하여 char* 형식의 project1 엔터리를 초기화 할 수 없습니다. 

    이렇게 에러가 뜨네요. 왜 이런 건가요??

    그리고 궁금한게 ptr왼쪽에 *은 왜 있는 건가요? 원래 변수는 *을 쓰면 안 되지 않나요?

    2018년 7월 4일 수요일 오전 5:25

모든 응답

  • "apple" 과 같은 문자열 리터럴은 값을 변경할 수 없는 const 타입입니다.

    그러므로 정확히 작성한다면 const char* ptr = "apple"; 가 되겠죠.

    그리고 ptr 왼쪽에 있는 *는 포인터 변수를 의미합니다.

    const char *ptr; 이렇게 써도 되지만 포인트 타입에 의미를 부여하여 const char* ptr; 와 같이 사용하기도 하죠.

    C언어 문법적인 것을 모두 설명하긴 어려우니 포인터 문법은 C언어 기초 도서를 참고하시기 바랍니다.

    2018년 7월 4일 수요일 오전 7:11