c語言有許多特性是為了方便編譯器設計者而建立的,這大大簡化了c語言本身,這讓c語言更容易學習與理解,同時增加了效率。
陣列下標從0開始而不是1;
c語言的資料基本型別直接與底層硬體相對應(沒有複數型別);
auto關鍵字是擺設,它是預設的記憶體分配模式;
表示式中的陣列名看作是指標(但並不等同);
float被自動擴充套件為double;
不允許巢狀函式(函式內部包含另乙個函式的定義);
提供了register關鍵字。
c語言為方便編譯器設計者建立的特性包括但不限於以上內容。
c語言出現早期,有許多人對其增加了許多新特性,從而產生不同的變種,其中較為流行的版本是k&r c,但為了防止其進一步變得鬆散,2023年美國國家標準化組織(ansi)成立了c語言工作小組,開始了c語言的標準化操作,這一版本c成為ansi c。相比而言,任何學習與使用c語言的人應當採用ansi c標準。ansi c增加了一些有趣的術語:
const char **p 能否被char **q賦值?即
void
foo(
const
char
**p)
;int
main
(int argc,
char
**ar**)
這段**會報錯(引數與原型不匹配,argument is incompatible with prototype )
簡單來講,const char **p中,p是乙個指向const char型別的指標的指標,而ar**是乙個指向沒有const修飾的char型別指標的指標,它們都是指標型別,但指向的內容不相容,故無法賦值;但值得一提的是,const char *p
是可以被char* q
賦值的,因為char 與const char是相容的,而相容是不具備傳遞性的。
前往下一章
c 第一二章
機器語言 組合語言 高階語言 軟體 程式 文件 封裝 有限的對外介面,安全性好 繼承 意義在於軟體復用 改造擴充套件已有類來形成新的類 多型 同樣的訊息作用在不同物件上可能引起不同的行為 同樣是打擊行為,打籃球打桌球的方法和規則都不一樣 三種不同型別的翻譯程式 匯程式設計序 將組合語言程式翻譯成目標...
UNIX網路程式設計第一二章讀書筆記
uinternet 使用tcp ip協議組成的網路 internet 使用各種協議組成的網路 internet是一種internet,反之則說法錯誤。bzero起源於berkeley memset起源於ansi read返回0表示對端關閉了連線,不論是阻塞還是非阻塞都是這樣 read返回負值表示出現...
Python自學第一二章筆記
1 啟動互動式環境 idle python gui 2 操作符 操作符操作 指數 取模 取餘數 整除 商數取整 3 資料型別 int,float,字串strs 連線 複製 4 變數名 字母 數字 下劃線 開頭非數字 5 注釋 6 print input len str 1 布林值 true,fals...