반응형
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*을 사용하는 것이 바람직하다.
반응형
'Archive2 > C&C++' 카테고리의 다른 글
[C/C++] const int& vs const int (0) | 2022.02.06 |
---|---|
[C/C++] Call-By-Value VS Call-By-Reference (0) | 2022.02.06 |
[C/C++] 포인터와 const (feat. const 키워드의 위치에 따른 차이점) (0) | 2022.02.02 |
[C/C++] 포인터란? _ * & nullptr (0) | 2022.01.27 |
[C/C++] strcpy strlen strcmp strcat _ 구현 코드 (0) | 2022.01.27 |