C++ 如何通过C++;引用,指向C函数的指针参数?
我只想在这里检查如何将引用传递给需要指针的函数。下面我有一个代码示例。在我的例子中,我把C++引用传递给一个C函数,它将改变我的值。 我应该在这个调用中使用运算符的“&”地址吗:retCode=MyCFunc(&myVar)?似乎我引用了一个引用,这是C++中不允许的。然而,它编译得很好,似乎很有效C++ 如何通过C++;引用,指向C函数的指针参数?,c++,pointers,reference,C++,Pointers,Reference,我只想在这里检查如何将引用传递给需要指针的函数。下面我有一个代码示例。在我的例子中,我把C++引用传递给一个C函数,它将改变我的值。 我应该在这个调用中使用运算符的“&”地址吗:retCode=MyCFunc(&myVar)?似乎我引用了一个引用,这是C++中不允许的。然而,它编译得很好,似乎很有效 MainFunc() { int retCode = 0; unsigned long myVar = 0; retCode = MyCPlusPlusFunc(myVa
MainFunc()
{
int retCode = 0;
unsigned long myVar = 0;
retCode = MyCPlusPlusFunc(myVar);
// use myVars new value for some checks
...
...
}
int MyCPlusPlusFunc( unsigned long& myVar)
{
int retCode = 0;
retCode=MyCFunc( &myVar);
return retCode;
}
int MyCFunc ( unsigned long* myVar)
{
*myVar = 5;
}
我认为我上面的代码很好,直到我在IBM站点上看到这个示例(它们不会使用运算符的“&”地址传递):
总的来说,我知道你可以做到以下几点:
int x = 0;
int &r = x;
int *p2 = &r; //assign pointer to a reference
正确答案是什么?我应该在通话中使用接线员的地址吗?实际上:
int x = 0;
int &r = x;
int *p2 = &r;
将
p2
放入x
的地址,因此它就是您所需要的。您的用法是正确的,执行&myVar
以获取它的地址并传递给需要指针的函数。获取“引用人”的地址与获取引用人的地址相同。您遇到的代码是错误的。您无法向需要指针的函数传递引用。至少,对于int
不使用&
运算符。如果没有它,您正在尝试将int
转换为int*
无效。请使用编辑表单中的相应按钮修复代码。谢谢。。。现在看起来好多了//将指针指定给引用不是真的。在这种情况下,p2指向x。IBM one如何编译对我来说是个谜。它会产生大约20个编译时错误。谢谢。只是想在看到IBM链接中的代码示例后进行一次健全性检查。是的,你是对的。只是想确定我没有发疯。谢谢
int x = 0;
int &r = x;
int *p2 = &r;