- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道,如果我们在 C++ 中定义一个函数,我们可以传递指针作为参数。例如,int function (int* a){//}。执行此操作时,我们可以将指针 (a) 与 & 和 * 运算符一起使用,这样就能够修改作为参数传递的原始变量。
后者也是通过引用传递参数的目的。然而,它有点不同。当我们调用这样声明的函数时:int function (int &a),必须将 int 变量作为参数传递,而不是像前一种情况那样传递指针。因此,在第二个函数内,我们以正常方式使用参数(作为 int),但原始值(在调用函数的范围内)可以更改。
很多人告诉我,这是因为,当使用通过引用传递参数时,我们实际上传递的是指针而不是值。这是真的吗?还有其他解释吗?第一个函数和第二个函数有什么区别?我非常感谢您的帮助。
最佳答案
有两种基本方法可以将某些内容传递给函数。您可以将某物的值传递给函数,也可以将某物的引用传递给函数。关键区别在于,当您传递某些内容的值时,您实际上是在创建具有相同值的新拷贝。
在 C 和 C++ 中,指针是包含作为其他内容的地址的值的数据类型。与非指针一样,指针也可以在 C++ 中按值或按引用传递。
从你的问题中并不清楚你想要比较的是什么,但是如果你将指针与通过引用传递进行比较,那么这并不是一个真正明智的比较,除非作为问题的两种不同解决方案。在 C++ 中传递指针时,还必须选择是按值还是按引用传递该指针。
在某种程度上,按值传递指向某事物的指针大致相当于按引用传递该事物本身。您可以拥有一种仅支持按值传递的语言,并且可以通过按值传递指针来“伪造”按引用传递。某些语言仅支持按引用传递,并且可以通过传递对拷贝的引用来“伪造”按值传递。
关于c++ - 通过引用传递参数到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25579281/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!