쓰려했는데 잘 쓴 글이 여럿 있네요. 그냥 요거 리터럴부터 읽으시길.


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은 배열의 이름, 주소


이와 같은 원리로 이해할 수 있습니다.

배열은 변수의 영역이므로 수정 가능하고요 :)

+ Recent posts