gpt4 book ai didi

c++ - 通过引用传递参数到底是什么?

转载 作者:行者123 更新时间:2023-11-30 18:40:36 25 4
gpt4 key购买 nike

我知道,如果我们在 C++ 中定义一个函数,我们可以传递指针作为参数。例如,int function (int* a){//}。执行此操作时,我们可以将指针 (a) 与 & 和 * 运算符一起使用,这样就能够修改作为参数传递的原始变量。

后者也是通过引用传递参数的目的。然而,它有点不同。当我们调用这样声明的函数时:int function (int &a),必须将 int 变量作为参数传递,而不是像前一种情况那样传递指针。因此,在第二个函数内,我们以正常方式使用参数(作为 int),但原始值(在调用函数的范围内)可以更改。

很多人告诉我,这是因为,当使用通过引用传递参数时,我们实际上传递的是指针而不是值。这是真的吗?还有其他解释吗?第一个函数和第二个函数有什么区别?我非常感谢您的帮助。

最佳答案

有两种基本方法可以将某些内容传递给函数。您可以将某物的值传递给函数,也可以将某物的引用传递给函数。关键区别在于,当您传递某些内容的值时,您实际上是在创建具有相同值的新拷贝。

在 C 和 C++ 中,指针是包含作为其他内容的地址的值的数据类型。与非指针一样,指针也可以在 C++ 中按值或按引用传递。

从你的问题中并不清楚你想要比较的是什么,但是如果你将指针与通过引用传递进行比较,那么这并不是一个真正明智的比较,除非作为问题的两种不同解决方案。在 C++ 中传递指针时,还必须选择是按值还是按引用传递该指针。

在某种程度上,按值传递指向某事物的指针大致相当于按引用传递该事物本身。您可以拥有一种仅支持按值传递的语言,并且可以通过按值传递指针来“伪造”按引用传递。某些语言仅支持按引用传递,并且可以通过传递对拷贝的引用来“伪造”按值传递。

关于c++ - 通过引用传递参数到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25579281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com