繁体   English   中英

将指针传递给参数为引用的函数

[英]Passing a pointer to a function whose parameter is a reference

我有一个函数,其参数为参考。 我需要将指针参数传递给此函数。 以下声明对这种情况是否有效? 如果没有,我该怎么办?

function foo(int& myParam) {
    //some code here
}

//function call
int *myArg;
foo(myArg);

要通过引用传递指针的值,必须取消引用该指针。 但是在您的情况下,您永远不会初始化指针,因此取消引用指针将导致未定义的行为。

int* ptr;
int& ref = *ptr; // dereferencing garbage pointer

您可以取消对指针的引用,并让编译器将值转换为引用,但是首先必须具有有效的指针,例如:

int *ptr = new int();
foo(*ptr)
delete ptr;

要么:

int i;
int *ptr = &i;
foo(*ptr)

如果要使用myArg指向的值,可以简单地编写以下代码:

foo(*myArg);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM