解釋乙個結構體陣列作為引數傳遞給函式的誤區

2021-09-27 01:54:28 字數 478 閱讀 7715

#include #include #include struct key

;struct key keytab =,,

,,,,

,,,,

,};int binsearch(char* , struct key);

int main()

int binsearch(char* word,struct key table)

}

程式本意想查詢一下double在是結構陣列keytab中的第幾個元素中的成員。

將結構陣列 「keytab」 傳遞給函式 「binsearch「本身沒有什麼問題,但是陣列作為引數傳遞的是陣列的「首位址」,

這將導致接下來的語句計算出現錯誤:int high = (sizeof table/sizeof table[0]) -1;

至於為什麼是4,為什麼是8,我有一篇博文:《關於指標為什麼是4個位元組大小》可以把這個問題講清楚

結構體作為引數傳遞

把結構體作為引數傳遞 1.對於我來這樣是很難理解的。結構體名不像陣列名那樣是這塊記憶體塊的位址。當用結構體指標做引數的時候。就應該用 來取出該結構體的位址,才能使用。2.當把就夠體名作為引數的時候。如 include struct name funds stan 定義結構體變數 double sum...

將整個結構體作為乙個引數傳遞給函式

程式 整個結構體作為乙個引數傳遞給函式 參考 c程式設計第四版第307頁 struct stores 宣告乙個結構體 struct stores update struct stores product,float p,int q 函式宣告,更改結構體 float mul struct stores...

結構體作為函式引數傳遞

結構變數是乙個標量,它可以用於其他標量可以使用的任何場合,但把結構體作為引數傳遞給乙個函式要注重效率 例如下面這樣乙個結構體 define product size 20 typedef structtransaction 如果我們需要列印裡面的資料,函式原型為 void print receipt...