본문 바로가기

Job Notes/Programming

문자 포인터(string pointer) 변수

전역 변수로 아래와 같이 선언되어 있다.

char aString[] = "now is the time";     /* an array */
char *pString = "now is the time";       /* a pointer */

위 두 변수의 차이점은?
* aString
   각각의 문자를 바꿀 수 있지만, 항상 일정한 장소에 저장
* pString
   가리키는 위치를 바꿀 수 있지만 내용을 바꾸는 것은 정의되어 있지 않다.
   (바꿀 수 없다는 말은 아니다)

  
사용자 삽입 이미지


그런데, pString이 가리키는 문자열들은 어디 저장되는 것일까? 그리고 왜 바꿀 수 없는 것일까?


실제로 Visual C++로 "strcpy(pString, aString)"을 하면
"0xC0000005: 0x00487894 위치를 기록하는 동안 액세스 위반이 발생했습니다."
라는 에러가 발생한다.