포인터와 배열의 차이를 이해하시면 될 것 같습니다.
배열은 같은 타입의 연속적인 요소들이 미리 할당된 공간이고 크기와 위치가 고정되어 있고요.
포인터는 다른 어떠한 방법으로 이미 할당된 메모리 공간을 가리키는 것입니다.
다음과 같이 생각해도 될 것 같습니다.
포인터는 read only라고 보시면 되고요.
배열은 read and write라고 보시면 될 듯합니다.
하지만 포인터를 malloc과 함께 써서 동적으로 할당한 배열처럼 쓴다면,
read and wirte처럼 보일 수는 있지만,
이는 단지 흉내는 내는 것이지,
포인터가 read and write가 된다고 볼 수는 없습니다.
----------------------------
즐거운 하루 되세요...^^
아~자~~!
이명훈 님이 쓰신 글 :
: 안녕하세요.
:
:
: #include
: #include
:
: int main(void)
: {
: char* literal_p = "Hello C";
:
: literal_p[6] = 'J'; // 1번
: puts(literal_p);
:
: strcpy(literal_p, "Hello C"); //2번
: puts(literal_p);
:
: return 0;
: }
:
:
:
: literal_p가 "Hello C"라는 문자열 상수를 가리키고 있고
: 그것의 값을 변경할 수 없기 때문에,,
: 실행중 오류가 나야한다고 하는데,
:
: 제가 할 때는 오류가 발생하지않고 잘 실행되었습니다..
: ,이유가 무엇 때문인지 궁금합니다.
:
:
: 에디트 플러스에 Borland C++ 5.5 Compiler 등록해서
: 인수는 터보C 포럼 자료실에 있는 ini파일을 사용했습니다.
: -v -IC:\Borland\BCC55\include -v -LC:\Borland\BCC55\lib -n"$(FileDir)" "$(FilePath)"
|