쓰려했는데 잘 쓴 글이 여럿 있네요. 그냥 요거 리터럴부터 읽으시길.
https://modoocode.com/33
제가 이 글을 읽다가 헷갈리던 부분을 서술하겠습니다.
char str[] = "Hello";
위 문장은 str에 "Hello" literal의 주소를 넣은 것으로 생각되고, 그러면 수정이 불가능한데 어째서 수정이 가능할까요?
char str[] = "Hello"; 는 널문자를 포함해서 6개의 일차원 배열이 할당됩니다.
그 안에 문자가 H, e, l, l, o, \0이 이렇게 6개가 들어가는 거죠.
즉, char str[] = "Hello";는
char arr[] = {72, 101, 108, 108, 111, 0};
char* str = arr; //arr은 배열의 이름, 주소
이와 같은 원리로 이해할 수 있습니다.
배열은 변수의 영역이므로 수정 가능하고요 :)
'C' 카테고리의 다른 글
c언어 포인터 const 선언 간단 정리 (0) | 2019.01.01 |
---|---|
c언어 함수의 인자 전달 call by value call by reference call by address (1) | 2018.12.31 |
c언어 홑따옴표와 쌍따옴표(작은 따옴표 큰 따옴표) (2) | 2018.12.23 |
포인터의 개념 (0) | 2018.01.10 |