0

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:***\main.c '&' トークンの前の構文エラー

4

3 に答える 3

4

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;
    }
    // ...
于 2012-03-24T02:17:49.430 に答える
2

エラー: 9 C: * \main .c '&' トークンの前の構文エラー

他の人が言ったことに加えて、あなたはそれをCファイルとしてコンパイルしており、Cには参照が存在しません。C++ としてコンパイルする場合は、.cpp 拡張子を付けます。またはpoint、参照の代わりにポインターを作成します (実際には、参照を再配置できないため、とにかくポインターにする必要があります)。

于 2012-03-24T02:22:35.000 に答える
2

C++ 参照はそのようには機能しません。参照を定義するときは、参照を初期化する必要があります。次のようなものです:

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

また、参照を「再配置」することはできません。常に同じ変数を参照します。したがって、上記の例を続けます。

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

r = y;  // This will not re-seat y; it's equivalent to x = y
于 2012-03-24T02:18:05.250 に答える