2012-03-24 56 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擴展名,或者使用指針而不是引用(實際上,由於無法重置引用,因此您必須將其設爲指針)。