當前位置:成語大全網 - 書法字典 - C語言中為什麽不能用賦值語句給整個字符數組賦值?

C語言中為什麽不能用賦值語句給整個字符數組賦值?

首先,C語言中的數組,壹旦定義,就不能改變類型和長度,也不是指針,也不能改變它所指向的內容,所以這樣寫。

int?a[10],?b[10];

答?=?b;它不能被編譯。

在其他語言中,如java、c#、javascript、python等,數組都是作為對象使用的。

可以寫a=b,那麽原本由a表示的數組將被放棄,a和b表示的數組將成為同壹個數組。

在C語言中,數組只是壹塊有類型和長度的內存,不提供這麽復雜的函數。

從邏輯上講,數組賦值的含義可以改為數組元素的賦值。但這將使基於簡單原則的C語言變得極其復雜:

如果A的長度大於B,則只更新B的長度,其余保持不變;如果b的長度大於a的長度,那麽只更新a的長度。這個說起來容易,但是數組的長度信息只有在沒有轉換成指針的時候才存在。當數組用作函數參數或賦給指針時,長度信息丟失,退化為指針類型。這就涉及到了指針的賦值,指針的賦值有原來的語義。所以事情會變得復雜。

總之,C作為壹門接近底層的語言,和指針、內存的使用有著千絲萬縷的關系,所以並不支持這種高級語法。