Dev-C ++给出'&'引用语法错误

时间:2012-03-24 02:15:50

标签: c 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:*** \ main.c语法错误在'&amp;'之前令牌

3 个答案:

答案 0 :(得分: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;
    }
    // ...

答案 1 :(得分: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

答案 2 :(得分:2)

  

错误:9 C: * \ main .c '&amp;'之前的语法错误令牌

除了其他人所说的,你将它编译为C文件,并且在C引用中不存在。如果你想把它编译成C ++,给它一个.cpp扩展名,或者让point成为一个指针而不是一个引用(实际上,你必须把它作为一个指针,因为你不能重新设置一个引用)。