인프런 커뮤니티 질문&답변

yahoo님의 프로필 이미지
yahoo

작성한 질문수

홍정모의 따라하며 배우는 C++

6.10 C언어 스타일의 문자열 심볼릭 상수

char *name vs const char *name

작성

·

498

·

수정됨

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 입니다.

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

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

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

 

1

yahoo님의 프로필 이미지
yahoo
질문자

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

yahoo님의 프로필 이미지
yahoo

작성한 질문수

질문하기