2012-03-24 122 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(这是与其他免费版本相同的编译器) - IDE)。 – 2012-03-24 02:18:39

+0

$ gcc test.cpp test.cpp:函数'int main(int,char **)': test.cpp:9:20:error:'rPoint'声明为引用但未初始化 test.cpp: 21:22:错误:'system'未在此范围内声明 – 2012-03-24 02:19:13

+0

我无法在mingw上构建库。该库将在Dev-C++上发布。有点懒惰:) – miqbal 2012-03-24 02:21:01

回答

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 

此外,你不能“重新安置”参考;它将始终引用相同的变量。因此,继续上面的例子:

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文件,并在C引用了不存在的。如果您想将其编译为C++,则可以给它一个.cpp扩展名,或者使用指针而不是引用(实际上,由于无法重置引用,因此您必须将其设为指针)。