2012-03-24 4 views
0

私は、次の文のためコンパイルエラーを取得しています:Cはアドレス別にパラメータを許可していますか?

void read_text(int & c1, int & c2, string file1, string file2) 

私はアドレスを渡すときにエラーが出るように見えます。エラーメッセージは次のとおりです。

Error 13 error C2143: syntax error : missing ')' before '&' \\vmware-host\shared folders\school\misc\johncpp\porj\similarity.c 101 

私はVisual Studioで使用しています。

答えて

3

Cでは、パラメータ参照の通常のメカニズムであるポインタを渡すことができます。ただし、構文はC++で使用されているものではありません。代わりに、それは次のとおりです。

void read_text(int * c1, int * c2, string file1, string file2) 
+0

C++でも、ポインタ引数の構文は '*'であり、 '&'ではなく... –

+0

@KerrekSB:同意しました。 C++は '&'を使って参照渡しのバリエーションを追加します。これは、呼び出しが変数のアドレスを取る必要がないことを意味します。 – wallyk

2

あなたの構文はCでは無効です。あなたの目的がわかりません。あなたがC++のリファレンス(C++のこと)を考えているか、ポインタを考えているのであれば、*でなく、&が必要です。

1

いいえ、CではC++スタイルの参照を使用できません。同様の動作をさせるには、ポインタを渡す必要があります。

+0

OPは必ずしも 'のstd :: STRING'を使用しようとしていません... –

+0

私はそれが可能だと仮定しますが、あなたは本当にそれを信じますか? –

+2

常に 'typedef char * string; 'の可能性があります。 –

関連する問題