0
我有一个函数,其参数是引用。我需要将一个指针参数传递给这个函数。下面的声明是否适用于这种情况?如果不是,我需要做什么?将指针传递给参数为参考的函数
function foo(int& myParam) {
//some code here
}
//function call
int *myArg;
foo(myArg);
我有一个函数,其参数是引用。我需要将一个指针参数传递给这个函数。下面的声明是否适用于这种情况?如果不是,我需要做什么?将指针传递给参数为参考的函数
function foo(int& myParam) {
//some code here
}
//function call
int *myArg;
foo(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)
难道你试一下?你的编译器说什么? – aschepler
查看他们发布的答案,他们会做你想做的。但是你的代码应该工作,而不是你期望的方式。知道指针是一个内存地址值,它也恰好是一个整数。所以在你的情况下,你将传递对指针的引用,而不是它指向函数的参数的值。所以它不会有你期望的价值,如果你搞砸它,它可能会导致一些非常不可预测的结果。 – Rob