我想澄清一些关于指针的事情,因为我认为这在 C++ 中很难。当我声明一个指针并将其传递给如下函数时:
//just an example
void showInt(int* numbers)
{
numbers += 3;
}
int main()
{
int* a = 10;
showInt(a);
return 0;
}
当我将变量 a
传递给函数时,我实际上是将原始变量传递给它吗?还是创建变量的拷贝,然后将其传递给函数?
我怎么知道我传递的是拷贝还是真实/原件?
最佳答案
你做不到
int* a = 10
这是没有意义的,你的编译器会告诉你错误。
当你这样做时:
//just an example
void showInt(int* numbers)
{
numbers += 3;
}
int main()
{
int a = 10;
showInt(&a);
return 0;
}
在那里你传递了一个地址a,然后给这个地址加上3,所以什么都没有改变。
如果你改变:
numbers += 3;
到
*numbers += 3;
然后您将修改变量a的值。
还有一种方法可以做到这一点: 只是改变
void showInt(int* numbers)
到
void showInt(int& numbers)
那么你可以使用
showInt(a);
并且您将修改a 的值,并且不会创建拷贝。
关于原始对象的 C++ 指针和复制对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8027388/