Archive2/C&C++
[C++] 문자열 기호적 상수 (char[] vs char* vs const char*)
novs
2022. 2. 2. 16:24
반응형
char str[] = "novlog" // 문자열 상수
char *str = "novlog" // 불가능 error
const char *str = "novlog" // 가능
C++에서 문자열을 초기화 하는 방식은 여러가지가 존재한다.
char str[] = "novlog";
우선 char str[] = "novlog" 와 같이 문자열 리터럴 상수로 배열을 초기화 가능하다.
char *str = "novlog" //x
char *str = "novlog" 처럼은 문자열을 초기화 할 수 없다. 그 이유는 어찌보면 당연한데, str이 포인터 이기 때문이다.
"novlog"는 주소가 아닌 "문자열 리터럴" 이기에, 포인터로 주소가 아닌 리터럴을 가리킬 수 없는 것이다.
const char* str = "novlog"
단, const 키워드를 붙이면 가능하다. C++은 const 키워드를 붙이면 char* 또한 "특별히" 문자열로 초기화 가능하게 해준다. 하지만 상수이기에 char str[] 와 달리 문자열의 값을 변경하는 것은 불가능하다.
따라서, 문자열의 값을 변경해야 한다면 char형 배열을 문자열 값을 변경할 필요가 없다면 const char*을 사용하는 것이 바람직하다.
반응형