繁体   English   中英

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

[英]Why do functions in c++ need pointers to work (pass by value,pass by reference)

我在 c++ 有一个问题。我是一个新手,前几天在 c++ 中编码,更具体地说,我试图实现一些功能(1 个添加 2 个数字,1 个交换 2 个数字)。

我意识到实现加法 function 的代码不需要指针(void func),而交换 function 仅在我在 ZC1C425268E68385D1AB5074C1 的参数中使用指针后才有效

关于为什么会发生这种情况的任何建议? 它是否与通过值或通过引用传递有关,如果是,我们何时真正需要在这些函数中使用指针?

函数采用 arguments 因为它们不能直接访问您的变量。 当您仅将值传递给 function(即void func(int a, int b){... } )时,function 仍然无法访问您的变量。 您所做的基本上是在 function 中创建与您传入的值相同的新变量。
但是,当您传递一个指针时,您是在告诉 function 实际变量在 memory 中,因此即使它不在其 Z31A1FD140BE4BEF2D11E121EC8ZA18A 中也可以修改变量语言没有用户级指针)。

根据您的标题,函数不需要指针即可工作:

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

在 C++ 中,传递参数的规则是传递变量的副本,除非另有说明。 当通过副本传递(又名传值)时,不能修改参数。

C++ 允许您传递对 object 的引用,而不是传递大型数据结构的副本(任何不适合处理器寄存器的内容)。 该参考的尺寸通常比它所指的 object 小很多。 此外,通过引用传递允许您修改原始 object:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM