c語言語言特點
時間:2022-02-18 20:12:02 | 來源:信息時代
時間:2022-02-18 20:12:02 來源:信息時代
基本特性
C 語言代碼
特有特點
C語言是一個有結(jié)構(gòu)化程序設(shè)計、具有變量作用域(variablescope)以及遞歸功能的過程式語言。
C語言傳遞參數(shù)均是以值傳遞(pAssbyvalue),另外也可以傳遞指針(apointerpAssedbyvalue)。
不同的變量類型可以用結(jié)構(gòu)體(struct)組合在一起。
只有32個保留字(reservedkeywords),使變量、函數(shù)命名有更多彈性。
部份的變量類型可以轉(zhuǎn)換,例如整型和字符型變量。
通過指針(pointer),C語言可以容易的對存儲器進(jìn)行低級控制。
預(yù)編譯處理(preprocessor)讓C語言的編譯更具有彈性。
優(yōu)缺點
C語言一共只有32個關(guān)鍵字,9種控制語句,程序書寫形式自由,區(qū)分大小寫。把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。C語言可以像匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計算機(jī)最基本的工作單元。
C語言的HelloWorld程序
C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括號、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達(dá)式類型多樣化。靈活使用各種運算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運算。
C語言的數(shù)據(jù)類型有:整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運算。并引入了指針概念,使程序效率更高。
C語言提供多種運算符和表達(dá)式值的方法,對問題的表達(dá)可通過多種途徑獲得,其程序設(shè)計更主動、靈活。它語法限制不太嚴(yán)格,程序設(shè)計自由度大,如對整型量與字符型數(shù)據(jù)及邏輯型數(shù)據(jù)可以通用等。
由于C語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位(bit)、字節(jié)和地址進(jìn)行操作,而這三者是計算機(jī)最基本的工作單元,可用來寫系統(tǒng)軟件。
C語言描述問題比匯編語言迅速,工作量小、可讀性好,易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語言相當(dāng)。C語言一般只比匯編程序生成的目標(biāo)代碼效率低10%~20%。
C語言在不同機(jī)器上的C編譯程序,86%的代碼是公共的,所以C語言的編譯程序便于移植。在一個環(huán)境上用C語言編寫的程序,不改動或稍加改動,就可移植到另一個完全不同的環(huán)境中運行。
C語言有豐富的數(shù)據(jù)結(jié)構(gòu)和運算符。包含了各種數(shù)據(jù)結(jié)構(gòu),如整型、數(shù)組類型、指針類型和聯(lián)合類型等,用來實現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)的運算。C語言的運算符有34種,范圍很寬,靈活使用各種運算符可以實現(xiàn)難度極大的運算。
C語言能直接訪問硬件的物理地址,能進(jìn)行位(bit)操作。兼有高級語言和低級語言的許多優(yōu)點。
它既可用來編寫系統(tǒng)軟件,又可用來開發(fā)應(yīng)用軟件,已成為一種通用程序設(shè)計語言。
1、C語言的缺點主要表現(xiàn)在數(shù)據(jù)的封裝性上,這一點使得C在數(shù)據(jù)的安全性上有很大缺陷,這也是C和C 的一大區(qū)別。
2、C語言的語法限制不太嚴(yán)格,對變量的類型約束不嚴(yán)格,影響程序的安全性,對數(shù)組下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語言比其他高級語言較難掌握。也就是說,對用C語言的人,要求對程序設(shè)計更熟練一些。
C11新特性
1、對齊處理(Alignment)的標(biāo)準(zhǔn)化(包括_Alignas標(biāo)志符,alignof運算符,aligned_alloc函數(shù)以及
頭文件)。
2、_Noreturn函數(shù)標(biāo)記,類似于gcc的__attribute__(noreturn)。
3、_Generic關(guān)鍵字。
4、多線程(Multithreading)支持,包括:_Thread_local存儲類型標(biāo)識符,;頭文件,里面包含了線程的創(chuàng)建和管理函數(shù)。
5、增強(qiáng)的Unicode的支持,基于CUnicode技術(shù)報告ISO/IECTR19769:2004,增強(qiáng)了對Unicode的支持。包括為UTF-16/UTF-32編碼增加了char16_t和char32_t數(shù)據(jù)類型,提供了包含unicode字符串轉(zhuǎn)換函數(shù)的頭文件.
6、刪除了gets()函數(shù),使用一個新的更安全的函數(shù)gets_s()替代。
7、增加了邊界檢查函數(shù)接口,定義了新的安全的函數(shù),例如fopen_s(),strcat_s()等等。
8、增加了更多浮點處理宏。
9、匿名結(jié)構(gòu)體/聯(lián)合體支持,這個在gcc早已存在,C11將其引入標(biāo)準(zhǔn)。
10、靜態(tài)斷言(StaticAssertions),_Static_Assert(),在解釋#if和#error之后被處理。
11、新的fopen()模式,('…x'),類似POSIX中的O_CREAT|O_EXCL,在文件鎖中比較常用。
12、新增quick_exit()函數(shù)作為第三種終止程序的方式。當(dāng)exit()失敗時可以做最少的清理工作。
13、_Atomic類型修飾符和頭文件。