본문 바로가기

Programming

문자열 리터럴 상수

비쥬얼 스튜디오 2017 부터 문자 포인터에 문자열을 정의하면 오류메세지를 내보낸다.

오류 메세지 : const char * 형식의 값을 사용하여 char * 형식의 엔터티를 초기화할 수 없습니다

 

 

 

 

문자열 데이터는 생성되면 읽기 데이터 영역에 상주하고

같은 문자열을 정의할 때 새로 만들지 않고 해당 메모리를 사용한다.

msg1과 msg2 포인터는 같은 곳을 가리키고 있다.

 

char[] msg 로 선언할 경우 문자열 데이터를 복사하여 스택으로 가져와 사용하기 때문에 수정이 가능 하지만 

char* msg는 할당된 메모리 자체를 가리키기 때문에 읽기만 가능하다.

 

 

 

애초에 const로 작동하고 있기 때문에 비주얼스튜디오 2017부터는 아예 문자열을 포인터로 가리키기 위해서는 const 키워드를 넣도록 강제한 것으로 추정된다.

'Programming' 카테고리의 다른 글

[도서]읽기 좋은 코드가 좋은 코드다  (0) 2020.04.10
객체지향  (2) 2020.04.04
빌드 과정  (0) 2020.03.18
[C#] 이란  (1) 2020.03.09
소켓 프로그래밍  (0) 2020.03.03