다음 코드가 유효하지 않은 이유는 무엇입니까?다음 코드가 유효하지 않은 이유는 무엇입니까?
void foo()
{
char hello[6];
char *foo = "hello";
hello = foo;
}
다음 코드는 어떻게 유효합니까?
void foo()
{
char hello[] = "hello";
char *foo = hello;
}
다음 코드가 유효하지 않은 이유는 무엇입니까?다음 코드가 유효하지 않은 이유는 무엇입니까?
void foo()
{
char hello[6];
char *foo = "hello";
hello = foo;
}
다음 코드는 어떻게 유효합니까?
void foo()
{
char hello[] = "hello";
char *foo = hello;
}
배열을 포인터로 지정하려고합니다. 이것은 유효하지 않습니다. 배열은 lvalues로 사용할 수 없다는 점에서 포인터 상수와 같습니다. 포인터는 다른 곳을 가리 키도록 다시 할당 할 수 없습니다. 가장 가까운 곳은 foo의 내용을 hello로 복사하는 것입니다.
두 번째 경우 hello는 char 배열이고 foo는 char 포인터입니다. 일반적으로 배열은 동일한 유형의 포인터와 상호 교환 가능하므로 유효합니다.
"hello"
문자열은 hello
으로 복사됩니다. 틀렸어. 포인터를 다른 포인터에 지정하려고합니다. 그리고 hello
에 지정할 수 없습니다.
올바른 방법은 다음과 같습니다 당신이 잘못 인 foo는 포인터에 문자열을 할당하는 첫 번째 경우에
strcpy(hello, foo);
. 두 번째 경우에는 char 배열이 있고 foo 포인터로 전달합니다
감사합니다. 내 질문에 대한 답변을하고 내 의구심을 해결했습니다. –