inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

연습 문제 (문자열) #1

문자열 char와 char* 관련 질문입니다.

606

5116696

작성한 질문수 6

0

안녕하세요 강의 듣는 도중 궁금한 점이 생겨서 질문 드립니다.

 

int BUF_SIZE = 100;

char a[BUF_SIZE] = "Hello"

char b[BUF_SIZE] = "World";

 

1.

strcpy나 strcat 같은 함수를 보면 char가 char* 형태의 매개변수가 될 수 있는 이유가

a가 배열이기 때문에 배열의 시작주소를 인자로 넘겨주기 때문에 가능한건가요?

 

2.

char형 변수는 데이터가 배열에 저장이 되기 때문에 복사가 이루어지면 그만큼 데이터를 복사하게된다고 생각이드는데

실무에서는 용량이나 트래픽을 아끼기위해서 char* 나 const char* 를 사용하는 편인가요??

 

c++

답변 2

0

Rookiss

  1. char a[BUF_SIZE] = "Hello";
    은 char 타입이 아니라 사실상 char[BUF_SIZE] 이렇게 묶어서 보시는게 좋습니다.
    따라서 a는 char이 아니라 char 타입의 배열인 것이죠.
    그렇기 때문에 a는 배열의 주소를 나타내어 char*로 치환이 되는 것입니다.

  2. 상황에 따라 다릅니다. 나중에 vector를 다뤄보면 더 고민할 상황이 생기는데
    트래픽을 아끼기 위해서 * 포인터 타입을 사용하는 것은 불가능할 때가 많습니다.
    왜냐하면 주소값이라는 것은 항상 바뀌는거라 그것을 네트워크로 흘려보내면
    다른 컴퓨터 입장에선 아무런 쓸모없는 값이기 때문입니다.

 

0

5116696

그렇군요.. 이해했습니다 감사합니다 ㅎㅎ

0

5116696

2번 질문에 추가로 설명드리자면..
예전 TextRPG 시간에 사용하셨던 PrintStatInfo의 매개변수를 const char* 타입으로 인자를 받으신 후에
문자를 출력할때 같은 함수를 반복해서 사용하신게 기억이납니다.
그래서 const char* 타입의 변수를 사용하는게 더 나은건가해서 질문드립니다

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

0

70

1

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

0

114

2

시작이 안되네요...!

0

97

2

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

0

126

1

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

0

131

1

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

0

124

1

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

0

94

2

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

1

139

2

hello world 부터 오류 ㅠㅜ

0

189

1

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

0

132

2

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

0

165

2

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

0

98

1

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

0

145

1

2를 더하는 이유

0

133

1

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

1

111

1

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

0

156

1

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

0

119

1

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

0

192

2

Field초기화

0

141

1

virtual과 override 차이

0

315

2

3:30 참조자 리턴

0

168

1

map 찾기

0

158

1

프로그램 질문드려요

0

260

1

캐스팅 질문

0

138

1