gpt4 book ai didi

c++ - 如何将 C++ 引用传递给 C 函数的指针参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:42 25 4
gpt4 key购买 nike

我只想在这里检查如何将引用传递给需要指针的函数。我在下面有一个代码示例。就我而言,我正在将 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 站点上看到这个示例(它们不使用运算符的“&”地址传递): http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/com.ibm.zos.r11.ceea400/ceea417020.htm

// C++ Usage
extern "C" {
int cfunc(int *);
}

main()
{
int result, y=5;
int& x=y;

result=cfunc(x); /* by reference */
if (y==6)
printf("It worked!\n");


// C Subroutine
cfunc( int *newval )
{
// receive into pointer
++(*newval);
return *newval;
}

一般来说,我知道您可以执行以下操作:

int x = 0;
int &r = x;
int *p2 = &r; //assign pointer to a reference

什么是正确的?我是否应该在通话中使用接线员的 & 地址?

最佳答案

你的用法是正确的,执行 &myVar 来获取它的地址并传递给需要指针的函数。获取“引用”的地址与获取所指对象的地址相同。

关于c++ - 如何将 C++ 引用传递给 C 函数的指针参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4369241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com