如何转换使用C++;通过引用传递到C? 我有一段代码,用C++编写,在C.需要它,我转换了大部分代码,但是我不能理解如何将C++中的函数引用转换成C代码,即
例如:如何转换使用C++;通过引用传递到C? 我有一段代码,用C++编写,在C.需要它,我转换了大部分代码,但是我不能理解如何将C++中的函数引用转换成C代码,即,c++,c,C++,C,例如: int& a; 它在某些函数中用作输入变量: void do_something(float f, char ch, int& a) 当我用C编译它时,我会得到编译器错误。在C中,什么是替换按引用传递的正确方法?在C中执行此操作的方法是按指针传递: void do_something(float f, char ch, int* a) 在中使用时,也要做一些事情而不是 void do_something(float f, char ch, int& a) {
int& a;
它在某些函数中用作输入变量:
void do_something(float f, char ch, int& a)
当我用C编译它时,我会得到编译器错误。在C中,什么是替换按引用传递的正确方法?在C中执行此操作的方法是按指针传递:
void do_something(float f, char ch, int* a)
在中使用时,也要做一些事情
而不是
void do_something(float f, char ch, int& a)
{
a = 5;
printf("%d", a);
}
您现在需要取消引用a
void do_something(float f, char ch, int* a)
{
*a = 5;
printf("%d", *a);
}
当调用dou\u something
时,您需要将正在传递的内容的地址记为a,因此
int foo = 0;
d_something(0.0, 'z', foo);
您需要执行以下操作:
int foo = 0;
d_something(0.0, 'z', &foo);
要获取foo的地址(即指向foo的指针)。因为引用在C中不可用,您必须传递一个指针:
void do_something(float f, char ch, int *a)
然后,在函数体中,必须取消对它的引用,以获取或修改指向的值:
*a = 5;
假设int
中的x
,并且您希望调用该函数,则使用&
运算符获取其地址(将其转换为int*
指针):
最接近的等价物是指针:
do_something(float f, char ch, int* a)
完成此操作后,您需要在函数中的任何地方更改a
->*a
,并更改对函数的调用以传递&a
,而不是a简单但不可取的,方法是从助手指针变量和#define
获得帮助,请随意否决此答案!如果可以,我会:)
转这个
int foo(int &a) {
a = 42;
/* ... */
return 0;
}
进入
<强>注释:必须定义C.的定义< <强> > /p> < p>在C++中没有等价于C++引用的
但是,您可以使用指针。但是它们都有自己的地址变量,而C++引用只是别名。
function do_something(float f, char ch, int* a)
我不会建议某人使用这样一个#define
,除非他非常懒或者不想记住a
是指针。我实际上会对它投赞成票,因为它很聪明,解释了这个概念,我们一致认为这是不可取的。创造性的回答,但它没有考虑调用约定的变化(因为您需要将调用此的代码更改为使用&)。我不会拒绝投票,但不会向上投票,因为这确实不应该做。
int foo(int *tmpa) { /* & to *; rename argument */
#define a (*tmpa) /* define argument to old variable */
a = 42; /* no change */
/* ... */ /* no change */
return 0; /* no change */
#undef a /* "undo" macro */
}
function do_something(float f, char ch, int* a)