为什么以下代码无效?
void foo()
{
char hello[6];
char *foo = "hello";
hello = foo;
}
但以下代码如何有效?
void foo()
{
char hello[] = "hello";
char *foo = hello;
}
答案 0 :(得分:3)
您正在尝试将数组指定为指针。这是无效的。数组就像指针常量一样,它们不能用作左值 - 它们不能被重新分配以指向其他地方。你可以得到的最接近的是将foo的内容复制到你好。
在第二种情况下,hello是一个chars数组,foo是一个指向char的指针。通常,数组可以与相同类型的指针互换,因此这是有效的。
答案 1 :(得分:3)
我认为你应该将字符串"hello"
复制到hello
。这是不对的。您正在尝试将指针指定给另一个。而且,您无法分配到hello
。
正确的方法是:
strcpy(hello, foo);
答案 2 :(得分:0)
在第一种情况下,您将字符串分配给错误的foo指针。 在第二种情况下,你有一个char数组,你将它传递给foo指针