작성
·
549
·
수정됨
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* 를 사용하는 편인가요??
답변 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* 타입의 변수를 사용하는게 더 나은건가해서 질문드립니다
그렇군요.. 이해했습니다 감사합니다 ㅎㅎ