#include <iostream>
#include <cstring>
using namespace std;
class Printer {
private:
char inputs[30];
public:
void SetString(char* sentence);
void ShowString();
};
inline void Printer::SetString(char* sentence){
strcpy(inputs, sentence);
}
inline void Printer::ShowString() {
cout << inputs << endl;
}
int main(){
Printer pnt;
pnt.SetString("Hello world!");
pnt.ShowString();
pnt.SetString("I love C++");
pnt.ShowString();
return 0;
}
질문
디테일이긴 하지만, strcpy에서 char* sentence -> sentence를 입력하는 이유는 무엇인가?
1. strcpy 함수는 source에서 destination으로 문자열을 복사하고, 복사 작업은 source에서 NULL 문자('\0')를 만날 때까지 계속됨
복사가 완료된 후 destination을 반환함.
destination은 충분한 크기로 선언되어야 하며, 복사할 문자열의 길이에 맞게 할당되어야 함.
2. strcpy 함수에는 두 개의 매개변수가 있음
- destination (대상 문자열): 문자열을 복사한 후 결과가 저장될 대상 문자열을 가리키는 포인터
- destination는 char 배열 또는 char 포인터로 선언
- 복사된 문자열은 destination에 저장됨
- destination는 충분한 크기로 선언되어야 하며, 복사될 문자열의 길이에 맞게 할당되어야 함
- source (원본 문자열):
- 이 매개변수는 복사하려는 원본 문자열을 가리키는 포인터
- source는 const char 배열 또는 const char 포인터로 선언
- source가 가리키는 문자열이 destination로 복사됨
3. 이 코드에서 char* sentence 대신 char sentence로 매개변수를 변경하면 컴파일 오류가 발생
→ char* sentence는 문자열을 가리키는 포인터를 받는 것이며, char sentence는 문자 하나를 저장하는 데 사용되는 단일 문자 변수임
→ SetString 함수가 입력으로 받는 것은 문자열임. 문자열은 여러 문자로 구성되어 있으므로 문자열을 다루기 위해서는 문자열을 가리키는 포인터(char*)를 사용해야 함.
(char 변수 하나로는 문자열을 저장하고 복사하는 데 충분하지 않음)
'개발 > c++' 카테고리의 다른 글
[c++] 함수 템플릿 (0) | 2023.09.07 |
---|---|
[c++] 함수 오버로딩 (0) | 2023.09.05 |
[c++] 클래스 디자인하기 (feat. 멤버변수 / 멤버함수 / private & public / inline) (0) | 2023.09.04 |
[c++] 인라인 함수의 효용 (3) | 2023.09.04 |
[c++] Call by value vs Call by reference (0) | 2023.09.03 |