为什么c++中的函数需要指针才能工作(通过值传递,通过引用传递)?

问题描述 投票:-1回答:1

我有一个c++的问题,我是一个新手,有一天我在用c++编码,更具体地说,我试图实现一些函数(1个加法2个数字,1个交换2个数字)。

我意识到实现加法函数的代码不需要指针(void func),而交换函数只有在我在函数的参数和实现它的变量中使用指针后才能工作(int type func)。

有什么建议可以告诉我为什么会出现这种情况吗?这是否与通过值或引用传递有关,如果是,我们什么时候真正需要在这些函数中使用指针?

c++ function pointers
1个回答
0
投票

根据你的标题,函数不 需要 指针来工作。

int add(int a, int b)  
{
  return a + b;
}

在C++中,传递参数的规则是传递变量的副本,除非另有告知。 当通过拷贝传递(也就是通过值传递)时,参数不能被修改。

C++允许你传递一个对象的引用,而不是传递大型数据结构的副本(任何不适合处理器寄存器的东西)。 引用的大小通常比它所引用的对象小很多。 另外,通过引用传递可以让你修改原来的对象。

bool divide(int a, int b, float& result)
{
  if (b == 0) return false;
  result = static_cast<double>(a) / static_cast<double>(b);
  return true;
}

通过指针传递与通过引用传递类似。 但是,指针可以指向任何地方。


0
投票

函数接受参数是因为它们不能直接访问你的变量。当你只把值传给一个函数时(比如说. void func(int a, int b){ ... }),函数仍然不能访问我们的变量。你所做的基本上是在函数中创建新的变量,这些变量的值与你传入的变量相同。不过,当你传递一个指针时,你是在告诉函数实际的变量在内存中的位置,所以即使变量不在它的作用域内,它也可以对变量进行修整(这很容易出错,这也是高级语言没有用户级指针的原因)。

© www.soinside.com 2019 - 2024. All rights reserved.