2013-06-27 153 views
0

在調用該函數傳遞數組變量的函數

int sum_array(int array[], int arr_length) 
{ 
    int sum = 0; 
    while(--arr_length >= 0) 
     sum += array[arr_length]; 
    return sum; 
} 

在主要功能

int main() 
{ 
    int b[10]; 
    ... 
    total = sum_array(b,10); 
    ... 
} 

爲什麼傳遞參數b,不b[]sum_array(b[],10)
注意:我不知道指針。

+0

因爲'b'是變量的名稱;括號是變量類型的一部分,不需要調用函數。 –

+0

@RobI應該('b []'是否被傳遞? – haccks

+0

變量'b'可以在寫入函數時傳遞給函數 - 'sum_array(b,10)'。沒有必要(它會不工作)將'b []'傳遞給函數 –

回答

2

在C中,數組作爲指針傳遞給第一個元素。 類型b是數組。

當傳遞b時,實際上是將一個指針傳遞給數組的第一個元素。

+3

您必須**閱讀教程。指針是非常非常基礎的。 – Maroun

+0

我只有兩章遠離指針,但現在呢? – haccks

+0

嘗試用指針編寫代碼,使用它..它會崩潰,你會調試,你會出汗,但最終會明白。 – Maroun

0

該函數需要一個指向int數組的指針,因此您需要將指針傳遞給數組的開頭。 b[10]指向十元素數組的第十一個(!)索引。

+0

對不起是一個錯誤!我已經編輯了我的帖子 – haccks

1
  • 爲什麼傳遞參數b和非B []作爲sum_array(B [],10)

短的答案:由於b[]是無效的語法。

這裏

int b[10]; 

變量b聲明。 int [10]是變量的類型。

由於函數接受標識符作爲參數,而不是類型,所以應該將標識符傳遞給函數。標識符是b

  • 注:我不知道指針。

它與指針無關。