인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

DWG담님의 프로필 이미지
DWG담

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

문자열 질문

해결된 질문

작성

·

197

1

조금 헷갈리는 부분입니다.

1.

const char* msg1 = "Hello World"같이

char*타입의 포인터 변수가 선언과 동시에 초기화를 하는경우 이 Hello World라는 문자열 상수가 데이터영역의 rodata로 저장이 되는건 컴파일러 마다 다르기에 앞에 const로 명시한다고 보면될까요? (vc c++에서)

의미 자체는 어쨋든 이 Hello World가 어딘가에 저장이 되고 msg는 그 주소값을 가지고 있으니 *(msg + 1), msg[1]같이 접근이 가능하고, 값을 변경하는것은 rodata라서 변경이 불가능.

그리고 char*와 char[]의 차이는 char[]는 문자열(rodata에 저장되있던)이 스택메모리에 복사가 되기에 그 값이 수정이 가능하다. 

라고 이해하면 될까요? 

답변 1

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

네 이해하신 내용이 맞습니다!

const char* msg1 = "Hello World"

저 부분은 의외로 사람들이 잘 모르고 있는 부분이기도 합니다.
"Hello World" 문자열이 스택에 저장되어 있다고 착각하기 쉽죠.

DWG담님의 프로필 이미지
DWG담

작성한 질문수

질문하기