프로그래밍/C

포인터에 문자열을 초기화, 변경하기

런앤두 2020. 12. 31. 15:39

문자열 상수는 프로그램이 사용하는 메모리 영역중에서 텍스트 세그먼트라고 불리는 특수한 메모리 영역에 저장된다. 

 

char *p="Helloworld";

 

먼저 포인터 변수가 생성된다. 모든 변수는 데이터 세그먼트 라고 불히는 영역에 저장된다. 

 

따라서 다음과 같이 포인터 변수를 통해 문자열 상수를 변경하려하면 운영 체제에 오류가 발생한다.

 

char *p = "Helloworld";

strcpy(p, "Goodbye");

 

하지만 다음과 같은 문장은 가능하다.

 

char *p = "Helloworld";

p = "Goodbye";

 

포인터 변수 p는 데이터 세그먼트에 있으므로 우리가 값을 변경할 수 있다. 따라서 다른 문자의 상수의 주소를 p에

 

저장할 수 있는 것이다.

 

출처- 책<쉽게 배우는 C언어 EXPRESS>