0

我在网上找到了这个程序来练习C。当我试图在代码块中编译这个程序时,我在'&'令牌|之前的两个地方收到了这个错误“错误:预期';',','或')'” (在代码中提到)。如果有人可以向我解释错误的原因,那将非常有帮助。

#include<stdio.h>
int f1(int x,int y)
{

x=x+2;
y=y+3;
return x+y;}
int f2(int &x,int y) //error: expected ';', ',' or ')' before '&' token|

{
 x=x+2;
y=y+3;
return x+y;
}
int f3(int *x,int *y)
{

*x = *x+2;
*y = *y+3;
return *x+*y;
}
int f4(int x,int &y,int *z)//error: expected ';', ',' or ')' before '&' token|
{    x=x+y;

 y=*z+3;
z=&x;
*z=y*2;
return *z;
}
main()
{
int k=3,m=5,r=0;
printf("1) %d %d %d\n",k,m,r);
r=f1(k,m);
printf("2) %d %d %d\n",k,m,r);
r=f2(k,m);
printf("1) %d %d %d\n",k,m,r);
r=f3(&k,&m);
printf("1) %d %d %d\n",k,m,r);
r=f4(k,m,&r);
printf("1) %d %d %d\n",k,m,r);

return 0;
}
4

3 回答 3

1

在 C 中,您不应该像 C++ 那样在函数定义中使用引用。

您甚至不需要使用指针,因为您只是在传递值。

int f2(int &x,int y) 
          ^^

修改上述函数定义

 int f2(int x,int y) 

这条线也

 int f4(int x,int &y,int *z)

修改上述函数定义

 int f4(int x,int y,int *z)

并声明您的功能。

于 2013-11-05T06:19:29.350 回答
1

第 11 行应该是int f2(int *x,int y)

您发布的代码是 C++ 代码。不是 C 代码。您不能在 C 编译器上执行 C++ 代码。

于 2013-11-05T06:22:27.767 回答
0

这不是 C 程序。这是一个 C++ 程序。它没有使用太多的 C++ 特性,但它使用的足够多,使该代码无法作为 C 代码编译。

将其编译为 C++ 或将其转换为 C。后者需要重写相当多的代码行。

于 2013-11-05T06:33:20.737 回答