Difference between function arguments declared with amp; and * in C++(C++中使用amp;和*声明的函数参数之间的差异)
问题描述
我键入了以下示例:
#include <iostream>
double f(double* x, double* y)
{
std::cout << "val x: " << *x << "
";
std::cout << "val y: " << *y << "
";
return *x * *y;
}
double f2(double &x, double &y)
{
std::cout << "val x: " << x << "
";
std::cout << "val y: " << y << "
";
return x * y;
}
int main()
{
double a, b;
a = 2;
b = 3;
std::cout << f(&a, &b) << "
";
std::cout << f2(a, b) << "
";
return 0;
}
在函数f
中,我将x和y声明为指针,可以使用*x
获取它们的值。当调用f
时,我需要传递我传递的参数的地址,这就是我传递&a, &b
的原因。f2
相同,只是定义不同。
f2
,因为我无法读出f2
中x
的地址,所以了解f
中的x和y(在那里我知道地址和值)。
提前谢谢!
编辑:好的,谢谢,在做了一些研究后,我发现了一个非常有用的主题:
Pointer vs. Reference
还有一个指向Google编码指南的链接http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Reference_Arguments,这非常useful
我觉得(据我现在所知,这是一种主题品味的形式)使更清楚
推荐答案
f2
通过引用获取其参数,这本质上是您传递的参数的别名。指针和引用的区别在于引用不能为空。对于f
,您需要传递要传递给指针的参数的地址(使用&;运算符),当您通过引用传递参数时,只需传递参数即可创建别名。
传递常量引用(const double& ref
)在您不打算更改函数内部的参数时是首选的,并且当您要更改它们时,使用非常量引用。
指针主要用于需要能够将NULL
传递给参数的情况,显然,在使用它之前,您需要在函数内部检查指针是否不是NULL
。
这篇关于C++中使用&;和*声明的函数参数之间的差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:C++中使用&;和*声明的函数参数之间的差异
基础教程推荐
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 设计字符串本地化的最佳方法 2022-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- C++,'if' 表达式中的变量声明 2021-01-01
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17