문자열 char와 char* 관련 질문입니다.
606
작성한 질문수 6
안녕하세요 강의 듣는 도중 궁금한 점이 생겨서 질문 드립니다.
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* 를 사용하는 편인가요??
답변 2
0
char a[BUF_SIZE] = "Hello";
은 char 타입이 아니라 사실상 char[BUF_SIZE] 이렇게 묶어서 보시는게 좋습니다.
따라서 a는 char이 아니라 char 타입의 배열인 것이죠.
그렇기 때문에 a는 배열의 주소를 나타내어 char*로 치환이 되는 것입니다.상황에 따라 다릅니다. 나중에 vector를 다뤄보면 더 고민할 상황이 생기는데
트래픽을 아끼기 위해서 * 포인터 타입을 사용하는 것은 불가능할 때가 많습니다.
왜냐하면 주소값이라는 것은 항상 바뀌는거라 그것을 네트워크로 흘려보내면
다른 컴퓨터 입장에선 아무런 쓸모없는 값이기 때문입니다.
0
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





