回覆列表
  • 1 # 弌94922977

    本來不想回答這個問題(因為有人告訴我這種問題回答多了就會老給我推送這種問題),但是看到竟然有誤導性回答,我還是簡單說一下吧……

    你這種寫法根本就不是一個字串的賦值寫法,你這就是一個包含5個元素的陣列,沒有任何多餘的東西。 C語言沒有對String(字串)這種型別的支援,它處理String時就是以字元陣列的形式來儲存和操作,而且編譯器會為以雙引號引起來的字串內容額外增加一個NULL,記為"\0",這個\0就是一個真實的儲存位元組,對應的二進位制內容就是[0000 0000]。這就是C語言對字串的“特殊”處理。(至於你寫的/0,我不知道你是在哪看到這種escape sequence用法的)。 你寫: 那就是一個普通陣列,沒有\0之類的會給你加在結尾,這個就是一個包含五個元素的陣列,有效訪問空間就是a[0]到a[4],超過a[4]的都是非法訪問。 你想表示一個字串,那就寫: 編譯器在發現雙引號引用的部分,會當作字串,結尾會自動補一個\0,而且會自動計算陣列的合適長度(例子的有效長度為6,包括一個\0)。如果你非要一個字元一個字元的表示,那基本上相當於: 當然你也可以將一個字串放到一個有更大空間的定長數組裡,如: 然後後續用C語言標準庫的字串操作函式給它接一部分內容,如: 這樣a就變成了: C語言沒有內建的處理整個陣列的方法(比如複製、比較陣列等),它也只對字串形式的陣列有非常少的方法,如strcpy, strcmp, strcat等。我不知道你是怎麼學習陣列和字串的,我只記得我大一第一次學字串時在理解上也有疑問,但都可以透過上機(圖書館機房刷卡1塊錢1小時)操作來自己弄明白。勤動手比勤動嘴要更有利於自己學到知識。

  • 中秋節和大豐收的關聯?
  • 宸希是什麼意思?