1) char* v;

v는 문자, 문자열이 저장된 메모리의 첫 주소를 저장할 수 있는 포인터변수

v 주소 메모리의 내용 변경 가능

v 문자열 변경 가능

ex)

char* v ="문자열 상수1"; //초기화 했어도 코드중에 언제나 변경 가능
v= "문자열 상수2"; 		//변경 가능
v= "문자열 상수3"; 		//변경 가능 

2)const char* v;

v는 문자열이 저장된 메모리의 첫 주소를 저장할 수 있는 포인터변수, 즉, v는 "상수문자열"의 포인터변수라는 의미

v 주소 메모리의 내용 변경 불가

v 문자열 변경 가능

한편, const의 대상이 v자체가 아니므로  v가 가리키는 주소는 변경가능함.

ex)

const char* v = "난 문자열 상수1이다"

위 처럼 초기화 했어도, 코드상에서 아래 처럼 다른 문자열의 메모리 주소를 대입가능하다는 말

v="난 문자열 상수2임" //가능함 v에 다른 문자열 주소는 대입가능
*v="난 문자열 상수2임"; //허용 안됨. v는 주소 메모리의 값을 변경 의도한 것인데, const char* v; 의 정의가 이런거 못하게 하는 것

 

3)char* const v;

v는 문자열이 저장된 메모리의 첫 주소를 저장할수 있는 포인터변수

초기화 할 때 한번 지정된 문자열& 메모리 주소는 변경 못함

ex)

char* const v = "난 문자열 상수1이다." ; 로 초기화 했는데 
v="난 문자열 상수2임"; 으로 변경 허용 안됨.

'C++' 카테고리의 다른 글

[C++] char[] 와 char*의 차이  (0) 2020.07.22
[C++] 포인터(Pointer)와 레퍼런스(Reference : 참조자)의 차이  (0) 2020.07.22
C++ assign (vector, map)  (0) 2020.07.16
C++ 동적할당  (0) 2020.07.14
C++ iterator, auto  (0) 2020.06.29

+ Recent posts