[英]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.