왜 메모리가 할당된 문자열 포인터에는 =로 문자열 리터럴을 직접 할당할 수 없나요?
, 이 정식님이 작성strcpy 함수로는 문자열 포인터에 할당된 메모리 공간을 유지하면서 그 안에 값을 넣을 수 있는데, = 로는 안 된다고 하더라구요. 이유가 궁금합니다.
Re: 왜 메모리가 할당된 문자열 포인터에는 =로 문자열 리터럴을 직접 할당할 수 없나요?
, 도장_ 관리자님이 작성UNIT 40번대까지 학습하면 자연히 풀릴 의문이라 생각합니다.
리터럴은 코드 자체에 들어간 값이므로 '읽기 전용'입니다.
포인터로 리터럴을 가리키면 리터럴을 읽을 수는 있으나 수정할 수 없습니다.
포인터에 malloc으로 메모리 공간을 할당하면 이 공간은 읽기, 쓰기가 가능한 공간입니다.
포인터를 수정할 수 있다, 없다가 아니라 포인터가 가리키는 대상이 수정할 수 없는 리터럴 문자열이냐, 수정할 수 있는 메모리 공간이냐의 차이입니다.