이미 답변을 받았지만 C / C ++ Facebook 그룹에서 매우 유사한 질문을 한 사람에게 답변을 공유하고 싶었습니다.
배열에는 할당 연산자 기능이 없습니다 *. 이것은 단순히 문자열 리터럴에 char 배열을 할당 할 수 없음을 의미합니다. 왜? 배열 자체에는 할당 연산자가 없기 때문입니다. (* 변경할 수없는 const 포인터입니다.)
배열은 단순히 연속적으로 할당 된 메모리의 영역이며 배열의 이름은 실제로 배열의 첫 번째 요소에 대한 포인터입니다. ( https://www.quora.com/Can-we-copy-an-array-using-an-assignment-operator 에서 인용 )
문자열 리터럴 ( "Hello world"또는 등 "abcd")을 char 배열에 복사하려면 문자열 리터럴의 모든 char 요소를 배열에 수동으로 복사해야합니다.
char s[100]; 이것은 길이가 100 인 빈 배열을 초기화합니다.
이제이 배열에 문자열 리터럴을 복사하려면 strcpy
strcpy(s, "abcd");그러면 문자열 리터럴의 내용이 복사 "abcd"되어s[100] 배열에 됩니다.
이것이 무엇을하는지에 대한 좋은 예가 있습니다.
int i = 0;
do {
s[i] = ("Hello World")[i];
} while(s[i++]);
strcpy이 사용자 지정 문자열 리터럴 복사기 대신 분명히 사용해야 하지만 strcpy기본적으로 작동 하는 방식을 설명하는 좋은 예입니다 .
도움이 되었기를 바랍니다!