当通过引用指针将函数与参数一起使用时会发生什么

What happens when use a function with an argument by reference with a pointer?

本文关键字:什么 一起 参数 引用 指针 函数      更新时间:2023-10-16

带有函数的引用相当混乱。您可以在函数定义中放入一个作为参数,然后在以后使用它时为该参数放入一个非引用非指针值。然后我想到了这个:

int foo (int& bar)
{
    //Code
}
//More code...
int* a = &b;
c = foo (a);

会发生什么?foo使用a,b还是什么?如何强制使用?

你为什么不自己测试呢?每当有疑问时,请尝试编译它!

它不起作用并且有意义 - foo()要求一个类型 int& 的参数 - 引用一个int,但您正在尝试传递指向它的指针。你会得到的错误是这样的

cannot convert parameter 1 from 'int *' to 'int &'

关于您的问题

如何强制使用?

您的函数当前能够修改传递给它的任何int值,因为它接受reference作为参数。

如果不希望函数修改其参数,请将其签名更改为:

int foo (int bar)

或者将参数更改为对const int的引用:

int foo (const int& bar)

如何强制使用?

不,它将生成编译错误。如果您想了解引用和指针之间的差异,请通过此链接。