你能告诉我在函数中使指针相等时出了什么问题吗?让我们看看这个例子:
void fun(int *array1)
{
int array2[5];
for(int i=0;i<5;i++)
{
array2[i]=3;
}
array1=array2;
}
int main(){
int x[5]; int n=5;
for(int i=0;i<5;i++){
x[i]=i; // --------> x[i]=i;
}
fun(x); //--------> x[i]=3
for(int i=0;i<5;i++){
cout<< x[i]<<" "; //-------> x[i]=i?????????? I expected x[i]=3;
}
return 0;
}
最佳答案
void fun(int *array1)
{
int array2[5];
for(int i=0;i<5;i++)
{
array2[i]=3;
}
array1=array2; // **HERE**
}
当此函数返回时,array2
不再存在。因此,即使这确实将 array1
的值返回给调用者,调用者也只会有一个指向不再存在的数组的指针。
当然,它甚至不会那样做。 array1=array2;
将 array1
变量设置为指向 array2
。但它们都是局部变量,所以无论如何这对调用者没有影响。
也许你想要:
memcpy(array1, array2, sizeof(array2));
但这是 C++,你应该使用像 std::array 这样的合理容器.
关于c++ - 函数c++中指针之间的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14947997/