0

C を練習するためにオンラインでこのプログラムを見つけました。コード ブロックでこのプログラムをコンパイルしようとすると、「エラー: '&' token| の前に ';', ',' または ')' が必要です」というエラーが 2 か所で発生します。 (コードで言及されています)。誰かがエラーの理由を説明してくれれば、本当に助かります。

#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++ のように関数定義 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)

関数を宣言します。

于 2013-11-05T06:19:29.350 に答える
0

これは C プログラムではありません。これは C++ プログラムです。あまり多くの C++ 機能を使用していませんが、このコードを C コードとしてコンパイルできないほど十分に使用しています。

C++ としてコンパイルするか、C に変換します。後者の場合、そのコードのかなりの行を書き直す必要があります。

于 2013-11-05T06:33:20.737 に答える