为什么这是对的?
#include<iostream>
using namespace std;
int main()
{
char *s="raman";
char *t="rawan";
s=t;
cout<<s;
return 0;
}但这是错的吗?
#include<iostream>
using namespace std;
int main()
{
char s[]="raman";
char t[]="rawan";
s=t;
cout<<s;
return 0;
}发布于 2011-08-04 01:53:04
第一个示例将一个指针分配给另一个有效的指针。
第二个例子将一个数组赋值给另一个数组,这在C& C++中是不允许的。
优秀的C++常见问题解答条目和答案应该是一本很好的读物。
发布于 2011-08-04 01:52:20
在第一个示例中,s=t执行指针赋值。在第二个示例中,s=t尝试将一个指针值(由数组表达式t的隐式转换或“衰减”产生)赋给一个数组对象。C++不允许数组赋值。
C和C++在这方面非常相似;comp.lang.c FAQ的第6节很好地介绍了数组和指针之间的关系。
发布于 2011-08-04 02:01:13
除了其他人所说的:
与流行的看法相反,数组实际上不是指针。它们只是在使用它们时有很多相似之处,并且有几个隐式的指针转换,这就是为什么使用它们很容易,就像它们是指针一样。
数组是(C和) C++的一个独立特性。它的行为与指针不完全一样。
例如,可以在堆栈上分配数组对象,当您使用new (返回一个指针)和指针分配对象时,这是不可能的。
你展示的是另一个例子:你不能像使用指针一样使用数组。但是您可以使用指针来指向连续的内存片段(数组)。
https://stackoverflow.com/questions/6930859
复制相似问题