C语言是否支持引用传递?函数参数中&符号报错应改用指针吗?
问题1解答
C语言不支持在函数参数中使用&符号声明引用参数。引用是C++专属的语法特性,C标准从未引入该写法。你使用C编译器编译这段代码时,编译器无法解析引用声明的语法,才会抛出逻辑不相关的“缺少括号”报错,移除&后语法符合C的规则,编译自然恢复正常。
问题2解答
如果你的项目需要遵循C语言标准,确实需要改用指针实现需求,将int &cnt调整为int *cnt、int &en调整为int *en。
修改后完整的函数代码如下:
int counter (int in, int *cnt, int *en) { static int in_old = 0; if (in_old == 0) if (in > 10) *cnt = *cnt + 1; if (*cnt > 1) *en = 1; in_old = in; // write counter code here return 0; }
调用该函数时需要传入对应变量的地址,示例如下:
int main() { int cnt = 0, en = 0; counter(12, &cnt, &en); return 0; }
如果你的项目本身是C项目,确认使用C编译器编译,原有引用参数的写法完全合法,无需调整为指针。
内容的提问来源于stack exchange,提问作者p20xx
相关产品推荐
相关产品推荐

