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

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 回答
2

错误:9 C: * \main .c '&' 标记之前的语法错误

除了其他人所说的之外,您正在将其编译为 C 文件,并且在 C 中不存在引用。如果您想将其编译为 C++ 或创建point一个指针而不是引用,请给它一个 .cpp 扩展名(实际上,无论如何您都必须将其设为指针,因为您无法重新安装引用)。

于 2012-03-24T02:22:35.000 回答