我不明白为什么将指针传递给函数并不会改变传入的数据。如果函数原型(prototype)看起来像这样:
void func( int *p );
而func给p分配了内存,为什么不能在函数外使用呢?我以为指针是地址?
最佳答案
虽然这样的事情符合您的预期:
void func(int *p)
{
*p = 1;
}
int a = 2;
func(&a);
// a is now 1
这不是
void func(int *p)
{
p = new int;
}
int *p = NULL;
func(p);
// p is still NULL
在这两种情况下,函数都使用原始指针的拷贝。不同之处在于,在第一个示例中,您尝试操作底层整数,因为您有它的地址,所以它起作用了。在第二个示例中,您直接操作指针,这些更改仅适用于 拷贝。
对此有多种解决方案;这取决于你想做什么。
关于c++ - 使用指针传递引用和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4776010/