如何将使用C++ pass-by-reference的函数转换为C?

Cas*_*lav 4 c c++

我有一段用C++编写的代码,需要它在C中.我转换了大部分代码,但我无法弄清楚如何将函数中的C++ pass-by-reference转换为C代码,即

例:

int& a;
Run Code Online (Sandbox Code Playgroud)

它在某些函数中用作输入变量:

void do_something(float f, char ch, int& a)
Run Code Online (Sandbox Code Playgroud)

当我用CI编译它时编译错误.什么是在C中用引用替换传递的正确方法?

Dou*_* T. 9

在C中执行此操作的方法是通过指针传递:

void do_something(float f, char ch, int* a)
Run Code Online (Sandbox Code Playgroud)

当使用in do_something而不是

void do_something(float f, char ch, int& a)
{
   a = 5;
   printf("%d", a);
}
Run Code Online (Sandbox Code Playgroud)

你现在需要解除引用 a

void do_something(float f, char ch, int* a)
{
   *a = 5;
   printf("%d", *a);
}
Run Code Online (Sandbox Code Playgroud)

在打电话时do_something你需要取一个传递给你的地址,而不是

int foo = 0;
d_something(0.0, 'z', foo);
Run Code Online (Sandbox Code Playgroud)

你需要这样做:

int foo = 0;
d_something(0.0, 'z', &foo);
Run Code Online (Sandbox Code Playgroud)

获取foo的地址(即指针).