欧美日本免费一区二区三区,中文字幕丰满乱孑伦无码专区,免费a级毛片无码鲁大师,亚洲久悠悠色悠在线播放

C語言

#編程語言# 0 0
C語言是一門面向過程的、抽象化的通用程序設(shè)計(jì)語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。盡管C語言提供了許多低級(jí)處理的功能,但仍然保持著跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的C語言程序可在包括類似嵌入式處理器以及超級(jí)計(jì)算機(jī)等作業(yè)平臺(tái)的許多計(jì)算機(jī)平臺(tái)上進(jìn)行編譯。
  • 中文名稱: C語言
  • 外文名稱: C
  • 發(fā)布時(shí)間: 1972年
  • 創(chuàng)始人: 丹尼斯·里奇
詳細(xì)介紹 PROFILE +

基本介紹

簡(jiǎn)介

C語言是一門面向過程的計(jì)算機(jī)編程語言,與C++、C#、Java等面向?qū)ο缶幊陶Z言有所不同。C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、僅產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。C語言描述問題比匯編語言迅速、工作量小、可讀性好、易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語言相當(dāng)。C語言一般只比匯編語言代碼生成的目標(biāo)程序效率低10%-20%。因此,C語言可以編寫系統(tǒng)軟件。

當(dāng)前階段,在編程領(lǐng)域中,C語言的運(yùn)用非常之多,它兼顧了高級(jí)語言和匯編語言的優(yōu)點(diǎn),相較于其它編程語言具有較大優(yōu)勢(shì)。計(jì)算機(jī)系統(tǒng)設(shè)計(jì)以及應(yīng)用程序編寫是C語言應(yīng)用的兩大領(lǐng)域。同時(shí),C語言的普適較強(qiáng),在許多計(jì)算機(jī)操作系統(tǒng)中都能夠得到適用,且效率顯著。

C語言擁有經(jīng)過了漫長(zhǎng)發(fā)展歷史的完整的理論體系,在編程語言中具有舉足輕重的地位。

發(fā)展歷史

C語言誕生于美國(guó)的貝爾實(shí)驗(yàn)室,由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·藍(lán)·湯普森(Kenneth Lane Thompson)設(shè)計(jì)的B語言為基礎(chǔ)發(fā)展而來,在它的主體設(shè)計(jì)完成后,湯普森和里奇用它完全重寫了UNIX,且隨著UNIX的發(fā)展,c語言也得到了不斷的完善。為了利于C語言的全面推廣,許多專家學(xué)者和硬件廠商聯(lián)合組成了C語言標(biāo)準(zhǔn)委員會(huì),并在之后的1989年,誕生了第一個(gè)完備的C標(biāo)準(zhǔn),簡(jiǎn)稱“C89”,也就是“ANSI C”,截至2020年,最新的C語言標(biāo)準(zhǔn)為2018年6月發(fā)布的“C18”。

C語言之所以命名為C,是因?yàn)镃語言源自Ken Thompson發(fā)明的B語言,而B語言則源自BCPL語言。

1967年,劍橋大學(xué)的Martin Richards對(duì)CPL語言進(jìn)行了簡(jiǎn)化,于是產(chǎn)生了BCPL(Basic Combined Programming Language)語言。

20世紀(jì)60年代,美國(guó)AT&T公司貝爾實(shí)驗(yàn)室(AT&T Bell Laboratories)的研究員肯·湯普森(Kenneth Lane Thompson)閑來無事,手癢難耐,想玩一個(gè)他自己編的,模擬在太陽系航行的電子游戲——Space Travel。他背著老板,找到了臺(tái)空閑的小型計(jì)算機(jī)——PDP-7。但這臺(tái)電腦沒有操作系統(tǒng),而游戲必須使用操作系統(tǒng)的一些功能,于是他著手為PDP-7開發(fā)操作系統(tǒng)。后來,這個(gè)操作系統(tǒng)被命名為——UNICS(Uniplexed Information and Computing Service)。

1969年,美國(guó)貝爾實(shí)驗(yàn)室的Ken Thompson,以BCPL語言為基礎(chǔ),設(shè)計(jì)出很簡(jiǎn)單且很接近硬件的B語言(取BCPL的首字母),并且用B語言寫了初版UNIX操作系統(tǒng)(叫UNICS)。

1971年,同樣酷愛Space Travel的丹尼斯·里奇為了能早點(diǎn)兒玩上游戲,加入了湯普森的開發(fā)項(xiàng)目,合作開發(fā)UNIX。他的主要工作是改造B語言,使其更成熟。

1972年,美國(guó)貝爾實(shí)驗(yàn)室的丹尼斯·里奇在B語言的基礎(chǔ)上最終設(shè)計(jì)出了一種新的語言,他取了BCPL的第二個(gè)字母作為這種語言的名字,這就是C語言。

1973年初,C語言的主體完成。湯普森和里奇迫不及待地開始用它完全重寫了UNIX。此時(shí),編程的樂趣使他們已經(jīng)完全忘記了那個(gè)“Space Travel”,一門心思地投入到了UNIX和C語言的開發(fā)中。隨著UNIX的發(fā)展,C語言自身也在不斷地完善。直到2020年,各種版本的UNIX內(nèi)核和周邊工具仍然使用C語言作為最主要的開發(fā)語言,其中還有不少繼承湯普遜和里奇之手的代碼。

在開發(fā)中,他們還考慮把UNIX移植到其他類型的計(jì)算機(jī)上使用。C語言強(qiáng)大的移植性(Portability)在此顯現(xiàn)。機(jī)器語言和匯編語言都不具有移植性,為x86開發(fā)的程序,不可能在Alpha、SPARC和ARM等機(jī)器上運(yùn)行。而C語言程序則可以使用在任意架構(gòu)的處理器上,只要那種架構(gòu)的處理器具有對(duì)應(yīng)的C語言編譯器和庫,然后將C源代碼編譯、連接成目標(biāo)二進(jìn)制文件之后即可在哪種架構(gòu)的處理器運(yùn)行。

1977年,丹尼斯·里奇發(fā)表了不依賴于具體機(jī)器系統(tǒng)的C語言編譯文本《可移植的C語言編譯程序》。

C語言繼續(xù)發(fā)展,在1982年,很多有識(shí)之士和美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)為了使C語言健康地發(fā)展下去,決定成立C標(biāo)準(zhǔn)委員會(huì),建立C語言的標(biāo)準(zhǔn)。委員會(huì)由硬件廠商、編譯器及其他軟件工具生產(chǎn)商、軟件設(shè)計(jì)師、顧問、學(xué)術(shù)界人士、C語言作者和應(yīng)用程序員組成。1989年,ANSI發(fā)布了第一個(gè)完整的C語言標(biāo)準(zhǔn)——ANSI X3.159-1989,簡(jiǎn)稱“C89”,不過人們也習(xí)慣稱其為“ANSI C”。C89在1990年被國(guó)際標(biāo)準(zhǔn)化組織(International Standard Organization,ISO)一字不改地采納,ISO官方給予的名稱為:ISO/IEC 9899,所以ISO/IEC9899:1990也通常被簡(jiǎn)稱為“C90”。1999年,在做了一些必要的修正和完善后,ISO發(fā)布了新的C語言標(biāo)準(zhǔn),命名為ISO/IEC 9899:1999,簡(jiǎn)稱“C99”。在2011年12月8日,ISO又正式發(fā)布了新的標(biāo)準(zhǔn),稱為ISO/IEC9899:2011,簡(jiǎn)稱為“C11”。

產(chǎn)品設(shè)計(jì)

語言組成

基本構(gòu)成

數(shù)據(jù)類型

C的數(shù)據(jù)類型包括:整型(short、int、long、long long)、字符型(char)、實(shí)型或浮點(diǎn)型(單精度float和雙精度double)、枚舉類型(enum)、數(shù)組類型、結(jié)構(gòu)體類型(struct)、共用體類型(union)、指針類型和空類型(void)。

常量與變量

常量其值不可改變,符號(hào)常量名通常用大寫。

變量是以某標(biāo)識(shí)符為名字,其值可以改變的量。標(biāo)識(shí)符是以字母或下劃線開頭的一串由字母、數(shù)字或下劃線構(gòu)成的序列,請(qǐng)注意第一個(gè)字符必須為字母或下劃線,否則為不合法的變量名。變量在編譯時(shí)為其分配相應(yīng)存儲(chǔ)單元。

數(shù)組

如果一個(gè)變量名后面跟著一個(gè)有數(shù)字的中括號(hào),這個(gè)聲明就是數(shù)組聲明。字符串也是一種數(shù)組。它們以ASCII的NULL作為數(shù)組的結(jié)束。要特別注意的是,中括號(hào)內(nèi)的索引值是從0算起的。

指針

如果一個(gè)變量聲明時(shí)在前面使用*號(hào),表明這是個(gè)指針型變量。換句話說,該變量存儲(chǔ)一個(gè)地址,而*(此處特指單目運(yùn)算符*,下同。C語言中另有雙目運(yùn)算符*)則是取內(nèi)容操作符,意思是取這個(gè)內(nèi)存地址里存儲(chǔ)的內(nèi)容。指針是C語言區(qū)別于其他同時(shí)代高級(jí)語言的主要特征之一。

指針不僅可以是變量的地址,還可以是數(shù)組、數(shù)組元素、函數(shù)的地址。通過指針作為形式參數(shù)可以在函數(shù)的調(diào)用過程得到一個(gè)以上的返回值,不同于return(z)這樣的僅能得到一個(gè)返回值。

指針是一把雙刃劍,許多操作可以通過指針自然的表達(dá),但是不正確的或者過分的使用指針又會(huì)給程序帶來大量潛在的錯(cuò)誤。

字符串

C語言的字符串其實(shí)就是以'