我发现这个程序在线练习C.当我尝试在Code块中编译这个程序时,我在'&'之前收到此错误“错误:预期';',','或')'令牌|“在两个地方(在代码中提到)。如果有人能解释我错误的原因,那将会非常有帮助。
#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;
}
答案 0 :(得分:1)
在C中,你不应该使用像C ++这样的函数定义AS中的引用。
您甚至不需要使用指针,因为您只是传递值。
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)
并宣布你的职能。
答案 1 :(得分:1)
第11行应为int f2(int *x,int y)
您发布的代码是C ++代码。不是C代码。您无法在C编译器上执行C ++代码。
答案 2 :(得分:0)
这不是C程序。这是一个C ++程序。它没有使用太多的C ++功能,但它足以使这些代码不可编译为C代码。
将其编译为C ++或将其转换为C.后者需要重写相当多的代码。