|
제가 테스트 해본 결과 로는 잘 되었습니다.
혹시 그러한 내용이 원칙적으로는 지원되지 않는 부분인데
컴파일러(볼랜드 계열)의 특정 버젼부터 지원해준 것일까
하는 생각이 문득 들어 TC 2.0에서 동일한 내용을 컴파일
해봤는데, 역시 변경이 가능하더군요.
더 정확히 이야기 해보자면 그와 같은 형태의 문장은
문법적 에러는 없습니다.
하지만 논리적 에러를 유발할 경향이 큰 문장이며
권장할만한 내용은 되지 못합니다(현재의 선언이
포인터 변수이기 때문에).
char * ptr = "test";
"test"라는 문자열이 메모리의 어디엔가 할당되어지고
그 선두 번지가 ptr에 들어 있을것입니다.
이 "test"라는 문자열은 CRT Heap에 할당됩니다.
이것은 프로그램이 알아서 관리해주기 때문에
그곳이 어디인지는 정확히 알 수 없을 것입니다.
ptr = "TEST";
라는 문장을 수행했다면 이것 또한 가능합니다.
하지만 이곳의 메모리 번지는, "test"가 있는
곳이 아닌 다른 곳의 주소일것입니다.
혹 어느 컴파일러를 사용하시는지요?
|