为什么下面的代码无效?
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;
}
您正在尝试将数组分配为指针。这是无效的。数组就像指针常量一样,它们不能用作左值——它们不能被重新分配以指向其他地方。最接近的方法是将 foo 的内容复制到 hello 中。
在第二种情况下,hello 是一个字符数组,而 foo 是一个指向字符的指针。通常,数组可以与相同类型的指针互换,因此这是有效的。
我认为您应该"hello"
将字符串复制到hello
. 这是错的。您正在尝试将指针分配给另一个。而且,您不能分配给hello
.
正确的方法是:
strcpy(hello, foo);
在第一种情况下,您将字符串分配给错误的 foo 指针。在第二种情况下,您有一个 char 数组,并将其传递给 foo 指针