为什么编译器抱怨使用对作为参数传递的 var 的引用?

问题描述 投票:0回答:1

我的代码:

#include <stdio.h>

void adding(int a,int b,int& sum);

int main(int argc, char const *argv[])
{
    
    int sum = 0;
    int a = 5;
    int b = 6;
    printf("Sum of %d and %d = ", a, b);
    adding(a,b,sum);
    printf("\n%d", sum);

    return 0;
}

void adding(int a, int b, int& sum) 
{
    sum = a + b; 
    printf("%d", sum);
}

我只是想看到将对 var(sum) 的引用作为参数传递给函数,其中该 var 将更改它的值 -> 也会更改 main() 中的值。但我得到这个:

error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token

但是它在我正在阅读的 C 书中工作正常。

我的平台:Ubuntu 22.04 海湾合作委员会版本:13.2.0 IDE:VS Code

c
1个回答
0
投票

int& sum
不是 C 的标准语法。在 C++ 中,它声明
sum
是引用。

在 C 中,要提供可以访问对象的函数,请将参数声明为指针,如

int *sum
所示,并且在调用函数时,传递对象的地址,如
adding(a, b, &sum) 所示
.

如果这本书是一本 C 书而不是一本 C++ 书,那就错了。

© www.soinside.com 2019 - 2024. All rights reserved.