제 기억상 C에서 char 배열로 문자열을 할당하면 변수 형태 문자열이라 해서 인덱스로 접근해서 문자열의 문자를 변경할 수 있고 메모리에 할당된 문자열의 주소 값을 char 포인터에 할당하면 상수 형태 문자열이라 해서 문자열의 내용을 변경할 수 없다고 배웠는데(윤성우 열혈 C) 왜 그런 거예요? 포인터 연산으로 문자열의 특정 부분의 메모리에 접근해서 메모리에 저장된 값을 변경할 수 없는 거임?
- dc official App
댓글 11
해당 댓글은 삭제되었습니다.
해당 댓글은 삭제되었습니다.2026-07-29 21:42
답글
ㄷㄷ - dc App
김슈팅(stargate112526)2020-09-24 13:09
배열이 메모리에 할당됐는데 뭔 소리여. string literal 말함?
익명(84.17)2020-09-24 13:06
답글
네 - dc App
김슈팅(stargate112526)2020-09-24 13:09
해당 댓글은 삭제되었습니다.
해당 댓글은 삭제되었습니다.2026-07-29 21:42
답글
ㅇㅎ 감사요 - dc App
김슈팅(stargate112526)2020-09-24 13:09
char str[] = "hello" 이거는 {h,e,l,l,o,'\0'} 이런 배열을 스택에 할당해서 그냥 다른 배열처럼 조작 가능함
익명(143.248)2020-09-24 13:10
char *str = "hello" 이거는 이름은 기억 안나는데 스택이 아니라 다른 수정 불가능한 메모리영역에 할당되어있고 그 주소를 str이 가리키는 방식이라 수정 불가함
해당 댓글은 삭제되었습니다.
ㄷㄷ - dc App
배열이 메모리에 할당됐는데 뭔 소리여. string literal 말함?
네 - dc App
해당 댓글은 삭제되었습니다.
ㅇㅎ 감사요 - dc App
char str[] = "hello" 이거는 {h,e,l,l,o,'\0'} 이런 배열을 스택에 할당해서 그냥 다른 배열처럼 조작 가능함
char *str = "hello" 이거는 이름은 기억 안나는데 스택이 아니라 다른 수정 불가능한 메모리영역에 할당되어있고 그 주소를 str이 가리키는 방식이라 수정 불가함
.rdata 엿던가
해당 댓글은 삭제되었습니다.
자세한 설명 감사합니다 - dc App