강의

멘토링

로드맵

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

yahoo님의 프로필 이미지
yahoo

작성한 질문수

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

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

char *name vs const char *name

작성

·

618

·

수정됨

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

작성한 질문수

질문하기