C
C언어 literal과 배열, 문자열
Ebbit
2018. 12. 23. 17:32
쓰려했는데 잘 쓴 글이 여럿 있네요. 그냥 요거 리터럴부터 읽으시길.
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은 배열의 이름, 주소
이와 같은 원리로 이해할 수 있습니다.
배열은 변수의 영역이므로 수정 가능하고요 :)