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