inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

다중 포인터

이중포인터 강좌 부분 질문있습니다.

145

남경태

작성한 질문수 9

0

char*와 int 의 원본을 수정하는 방식이 다른 이유가 아래와 같은 원리때문인 걸까요?

char*는 문자의 배열(?) 같은 것이고 "Hello" 라는 문자열이 있는 주소를 담는 변수라 한다면 SetMessage는 "Hello"를 담는 바구니의 내용물을 "Bye"로 바꾸는 것이 아니라 따로 "Bye"를 담는 바구니(주소)로 이사하는 방식으로 주소를 바꾸는 것이기 때문에 이중 포인터를 사용하는 것이고

int는 바구니의 내용물을 바꾸는 것이기에 하나의 * 만 필요하다.

c++

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 남경태님.

질문하신 내용은 포인터와 메모리 관리 개념의 핵심을 잘 짚고 계십니다. char*int의 값 변경 방식은 기본적으로 다른 개념을 이용합니다. 이해를 돕기 위해 관련된 몇 가지 기존 질문과 답변을 기반으로 설명드리겠습니다.

문자 포인터(char*)

  • 문자열 리터럴: char* msg = "Hello"; 와 같은 구문은 문자열 "Hello"가 프로그램의 읽기 전용 데이터 섹션에 저장되고, msg는 이 문자열의 시작 주소를 가리키는 포인터입니다.
  • 주소 변경: 이 포인터가 가리키는 주소를 SetMessage 등의 함수 내에서 바꿀 수 있으며, 이는 "Hello" 대신 "Bye" 등의 다른 문자열 주소를 가리키도록 할 수 있습니다. 이때는 이중 포인터를 사용하여 실제 포인터가 가리키는 주소를 변경할 수 있습니다.

정수 포인터(int*)

  • 변수 자체 변경: int 타입은 단일 값으로, 포인터를 사용하여 직접 그 값을 변경할 수 있습니다. 예를 들어, int x = 5;일 때, int* ptr = &x;로 설정하고 *ptr = 10;으로 값을 변경할 수 있습니다. 이는 직접 변수의 데이터 공간에 접근하여 값을 변경하는 방식으로, 이중 포인터가 필요하지 않습니다.

관련 질문 및 답변 URL

  1. const char **pp관련 질문있습니다. - 문자열에서의 포인터와 주소 변경에 대한 개념이 설명되어 있습니다.
  2. 이중 포인터를 이용한 값 변경 질문입니다. - 이중 포인터를 통해 문자열 주소를 바꾸는 방법을 설명합니다.

이와 같은 차이점 때문에 char*는 문자열 리터럴의 주소를 변경하는 방식으로 다루며, int는 값을 바로 변경할 수 있는 형태로 다루게 됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

소스코드와 관련하여 질문드립니다

0

65

1

map 컨테이너의 emplace 함수에 대해

0

105

2

시작이 안되네요...!

0

95

2

EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유

0

123

1

리틀 엔디안 장점 질문합니다.

0

129

1

메모리 창에 주소를 넣었는데 영어 꺠짐

0

123

1

타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.

0

93

2

map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.

1

138

2

hello world 부터 오류 ㅠㅜ

0

184

1

지역변수가 스택? 레지스터

0

126

2

마지막 문제 질문드립니다.

0

162

2

메모리창이 비활성화됩니다.

0

98

1

2를 더하는 이유

0

131

1

메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다

1

109

1

해당 코드는 왜 오류가 날까요?

0

153

1

마지막 문제 질문 있습니다.

0

115

1

강의 마지막부분에 질문이 있습니다.

0

190

2

Field초기화

0

140

1

virtual과 override 차이

0

311

2

3:30 참조자 리턴

0

164

1

map 찾기

0

155

1

프로그램 질문드려요

0

255

1

캐스팅 질문

0

134

1

암시적/명시적 생성자 쓸 때 주의할 점 공유

0

279

1