You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:36:01