2012-03-24 13 views
0

Dev-C++で何が問題になっているのですか、または参照変数を使用する際にコードにエラーがありますか?Dev-C++で '&'参照構文エラーが発生する

#include <stdio.h> 

    struct P { 
     int x; 
    }; 

    int main(int argc, char **argv){ 
     struct P Point[5]; 
     struct P & rPoint; 

     int i; 
     for(i=0;i<=4;i++) { 
      rPoint = Point[i]; // I know. I can use Point[i].x = i. But... 
      rPoint.x = i; 
     } 

     for(i=0;i<=4;i++) { 
      rPoint = Point[i]; 
      printf("%d\n", rPoint.x); 
     } 
     system("pause"); 
     return 0; 
    } 

エラー: 9 C:*** \ '&' トークン

+1

私はDev-C++固有のライブラリはないと思っています。問題はコンパイラですが、Dev-C++では普通はMinGWの古いバージョンを使用しています(通常は他のフリーでよく使われるコンパイラです - IDEs)。 –

+0

$ gcc test.cpp test.cpp:関数 'int main(int、char **)'内: test.cpp:9:20:エラー: 'rPoint'は参照として宣言されていますが、初期化されていません test.cpp: 21:22:エラー:このスコープで 'system'が宣言されていません –

+0

mingwでライブラリを構築できませんでした。ライブラリはDev-C++にパックされています。少し遅れて:) – miqbal

答えて

4

C++前main.cの構文エラーが割り当てられていないの参照を許可していませんので、これはあなたのエラーです:

struct P & rPoint; 

再割り当てが必要な場合は、ポインタを使用します。

int main(int argc, char **argv){ 
    struct P points[5]; 
    struct P* point; 

    int i; 
    for(i=0;i<=4;i++) { 
     point = points + i; // or &points[i] 
     point->x = i; 
    } 
    // ... 
2

C++の参考文献はそのようには機能しません。参照を定義する際には、参照を初期化する必要があります。したがって、次のようなものがあります。

int x = 5; 
int &r = x; // Initialise r to refer to x 

また、参照を「再配置」できません。常に同じ変数を参照します。他の人はあなたがCファイルとしてコンパイルされ、そしてCの参照には存在しない、言ったことのほかに

int x = 5; 
int y = 10; 
int &r = x; 

r = y; // This will not re-seat y; it's equivalent to x = y 
2

Error: 9 C:*\main.c syntax error before '&' token

:だから、上記の例を続けます。 C++としてコンパイルする場合は.cpp拡張子を付けてください。あるいは、参照の代わりにpointをポインタにしてください(実際には参照を再配置できないため、実際にはポインタをポインタにする必要があります)。

関連する問題