1. 程式人生 > >C語言中沒有String型別

C語言中沒有String型別

C 是靜態弱型別語言。意味著型別(包括 size 等資訊,你使用 sizeof 就是編譯時候得到的)在編譯的時候就能確定下來。

它的原生簡單型別有 char int float 這樣的,原生複合型別有 struct,以及“偉大”的 指標型別 primitive_type * .

這些型別的設計是在編譯時可以明確確定儲存空間大小,比如 char 佔一個位元組。32bit 機器上的指標為 4 Bytes.

所謂的 String 型別,它的大小不能在編譯的時候確定下來,因為你將儲存 string 的長度不是固定的,可大可小。你說編譯器給 string 分配多少合適?

所以在 C 中 string 只能以複合型別存在,一般用 struct 包含一個指標型別和一個表示儲存空間大小的整數型別。

你見到的其他語言的 string 也並非它最基本的型別。只不過作為標準庫提供出來了,方便使用。C 不屑於幹這事 —— 因為它有“偉大”的指標。