C++ 如何通过C++;引用,指向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

我只想在这里检查如何将引用传递给需要指针的函数。下面我有一个代码示例。在我的例子中,我把C++引用传递给一个C函数,它将改变我的值。 我应该在这个调用中使用运算符的“&”地址吗:retCode=MyCFunc(&myVar)?似乎我引用了一个引用,这是C++中不允许的。然而,它编译得很好,似乎很有效

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;