1

为什么下面的代码无效?

void foo()
{
    char hello[6];
    char *foo = "hello";
    hello = foo;
}

但是以下代码如何有效?

void foo()
{
    char hello[] = "hello";
    char *foo = hello;
}
4

3 回答 3

3

您正在尝试将数组分配为指针。这是无效的。数组就像指针常量一样,它们不能用作左值——它们不能被重新分配以指向其他地方。最接近的方法是将 foo 的内容复制到 hello 中。

在第二种情况下,hello 是一个字符数组,而 foo 是一个指向字符的指针。通常,数组可以与相同类型的指针互换,因此这是有效的。

于 2013-03-19T11:57:27.287 回答
3

我认为您应该"hello"将字符串复制到hello. 这是错的。您正在尝试将指针分配给另一个。而且,您不能分配给hello.

正确的方法是:

strcpy(hello, foo);
于 2013-03-19T11:58:02.290 回答
0

在第一种情况下,您将字符串分配给错误的 foo 指针。在第二种情况下,您有一个 char 数组,并将其传递给 foo 指针

于 2013-03-19T12:50:48.593 回答