• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

char *name vs const char *name

23.06.03 14:43 작성 23.06.03 14:45 수정 조회수 376

1

안녕하세요,

전자는 에러나고 후자는 ok인데, 그 이유가 "string literal은 constant array of chars이므로, pointer 또한 const이어야 한다"라고 다른 곳에서 설명을 봤습니다.(https://stackoverflow.com/questions/61601872/why-do-string-literals-char-in-c-have-to-be-constants)

이 설명과 "기호적 상수"개념이 어떻게 연결될 수 있는지 궁금합니다. (사실 지금 예시에서 "기호적 상수"가 어떤 의미인지 제대로 모르겠습니다.)

답변 2

·

답변을 작성해보세요.

2

Soobak님의 프로필

Soobak

2023.06.04

안녕하세요, 답변 도우미 Soobak 입니다.

기호적 상수는 특정한 값을 가진 이름의 상수를 의미합니다.

문자열 리터럴은 프로그램의 메모리에서 읽기 전용 공간에 저장됩니다.
이는 추후 강의 7.10 스택과 힙 stack and the heap 에서 메모리 레이아웃과 함께 보다 자세히 학습하시게 됩니다.

문자열 리터럴은 컴파일 타임에 정해지며, 그 값을 변경할 수 없습니다.
따라서, 문자열 리터럴에 대한 포인터도 변경할 수 없는 값을 가리켜야 하므로 const 로 선언되어야 하는 것입니다.
또한,const 로 선언함으로 문자열 리터럴을 기호적 상수처럼 사용할 수 있다는 것으로 이해하시는 것이 적절할 것 같습니다.

 

1

yahoo님의 프로필

yahoo

질문자

2023.06.04

그렇군요!! 답변감사합니다 ! :)