본문 바로가기

C++

[C++] 문자형 배열 vs 문자형 포인터

     char str[]="Korea";
     char *ptr="Korea"; 

     puts(str);
     puts(ptr); 

     ptr="China";
//  str="China";

     str[0]='C';
//  ptr[0]='C';

 

위와 같이 문자형 배열이나 문자형 포인터를 문자형 상수("Korea")로 초기화 했을 때

문자형 상수는 정적 데이터 영역에 저장되어 한번 저장된 상수는 또 불러졌을 때 재사용하게 된다.

 

문자형 배열은 정적 데이터 영역에서 문자형 상수를 복사해서 사본을 저장하기 때문에

str[0] = 'C'처럼 요소의 값을 변경할 수는 있지만 str="China"처럼 다른 문자열을 대입할 수는 없다.

 

문자형 포인터는 정적 데이터 영역의 문자형 상수를 직접 가리키기 때문에 

ptr = "China"처럼 다른 상수를 가리킬 순 있지만 문자형 상수를 변경하지는 못한다.

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

[C++] 함수 포인터  (0) 2022.01.03
[C++] Const 포인터  (0) 2022.01.03
[C++] 포인터 배열과 배열 포인터  (0) 2022.01.02
[C++] 포인터 vs 배열  (0) 2022.01.02
[C++] 다차원배열  (0) 2022.01.02