728x90

 

#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 변수 하나로는 문자열을 저장하고 복사하는 데 충분하지 않음)

 

 

 

728x90

+ Recent posts