2013-01-19 46 views
-2

當我編譯這個C程序,我得到一個錯誤:C++錯誤:「未定義參考CNT(INT)collect2:錯誤:LD返回1個退出狀態

In function `main': maxcount.cpp:(.text+0x63): undefined reference to `cnt(int)' 

collect2: error: ld returned 1 exit status 

是什麼意思這裏是代碼:

#include<iostream> 
using namespace std; 
int cnt(int); 
int main() 
{ 
    int x[30],i,j,q; 
    cout<<"enter x[i]"; 
    for(i=0;i<7;i++) 
    { 
    cin>>x[i]; 
    } 
    q = cnt(x[30]); 
} 
int cnt(int x[30]) 
{ 
    int i,j; 
    int max=x[0]; 
    int count=0; 
    for(i=0;i<7;i++) 
    { 
    if(x[i]>max) 
    { 
     max=x[i]; 
    } 
    else 
    { 
     max=x[0]; 
    } 
    } 
    for(i=0;i<7;i++) 
    { 
    if(max==x[i]) 
    { 
     count++; 
    } 
    } 
    cout<<count; 
    return 0; 
} 
+0

你普遍錯誤地使用數組。它看起來像你認爲數組的名稱是'x [30]',但它不是;它的名字是'x'。 –

回答

1

這意味着它不能找到一個定義int cnt(int);,這main()用途和你向前聲明

相反,你定義:

int cnt(int x[30]) { ... } 

這些是兩個不同的簽名。一個接受一個整數參數,另一個接受一個整數數組。

另外,這種說法是不正確的:

q=cnt(x[30]); 

這從x陣列取元件在索引30。然而,x只聲明爲大小30的由於您使用x作爲自己的函數中的數組,你可能只是想你向前聲明更改爲:

int cnt(int[30]); 

,然後調用它像這樣:

q = cnt(x); 
+0

謝謝你..他解決了我的問題 – user1977172

1
int cnt(int x[30]) { ... } 

一樣:

int cnt(int x) { ... } 

雖然你聲明瞭一個採用單個整數函數的原型,但你永遠不會定義這樣的函數。相反,你可以定義一個接受數組。

您需要弄清楚是否要傳遞數組或數組的一個元素。電話:

q=cnt(x[30]); 

嘗試傳遞數組的第31個元素(這種方式不存在)。我懷疑(因爲你在函數中取消x),你可能只想通過x,這是整個數組(或更準確地說,是所述數組的第一個元素的地址)。

+0

謝謝你..解決了我的問題 – user1977172

相關問題