23 有一陣列名字 CSName,當把此陣列當作參數,傳遞給一函數時,在 C 語言中,會以下列那一種方式自動傳 遞?
(A)*CSName
(B)CSName[0]
(C)CSName[1]
(D)&CSName[0]
答案:登入後查看
統計: A(99), B(62), C(23), D(198), E(0) #1136759
統計: A(99), B(62), C(23), D(198), E(0) #1136759
詳解 (共 6 筆)
#2833460
(D)傳址陣列的第一個元素位址
用陣列名稱作函數參數與用陣列元素作參數有幾點不同:
1)用陣列元素作參數時,只要陣列類型和函數的傳入變數的類型一致,那麼作為下標變數的陣列元素的類型也和函數參數變數的類型是一致的。因此,並不要求函數的參數也是下標變數。換句話說,對陣列元素的處理是按普通變數對待的。用陣列名稱作函數參數時,則要求參數和相對應的傳入參數都必須是類型相同的陣列,都必須有明確的陣列說明。當參數和傳入參數二者不一致時,即會發生錯誤。
2)在普通變數或下標變數作函數參數時,參數變數和傳入參數變數是由編譯系統分配的兩個不同的記憶體單元。在函數使用時發生的值傳送是把傳入參數變數的值賦予參數變數。在用陣列名稱作函數參數時,不是進行值的傳送,即不是把傳入參數的每一個元素的值都賦予參數的各個元素。因為實際上參數並不存在,編譯系統不為參數分配記憶體。
陣列名稱就是陣列的首位址,因此在陣列名稱作函數參數時所進行的傳送只是位址的傳送,也就是說把傳入參數的首位址賦予參數陣列名稱。參數陣列名稱取得該首位址之後,也就等於有了實在的陣列。實際上是參數和傳入參數為同一陣列,共同擁有一段記憶體空間。
4
0
#1378247
排版錯誤
0
0