原始对象的 C++ 指针和复制对象的指针

标签 c++ pointers

我想澄清一些关于指针的事情,因为我认为这在 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/

相关文章:

c++ - 如何定位指针错误?

c - 具有指向指针和 strcpy 的指针的函数

C++ 是否有可能基类有一个带有派生类参数的函数

c++ - 使用 g++ 与 ACE 库链接时遇到一些问题

c++ - 在 Debian 测试 x64 中无法编译 c++ 4.7.2

c++ - 我自己的智能指针,double free or corruption (fasttop)

C++数组指针在结构中保留内存位置但丢失所有值

c++ - 将数组指针传递给函数

c++ - 在 C++ 2 中处理 int 数组

c++ - 不知道 "return ch[c-' A']”是怎么回事