C語言基本概念

來源:互聯網
上載者:User

標籤:

1. 標準C語言

C語言誕生於20世紀70年代,年齡比我們自己還要大,期間產生了很多標準,但是各種編譯器對標準的支援不盡相同。

ANSI C是使用的最廣泛的一個標準,也是第一個正式標準,被稱為“標準C語言”。ANSI C於1980年由美國國家標準局(American National Standards Institute,簡稱ANSI)對外發布,各種編譯器幾乎都完整支援ANSI C,市面上的書籍、大學裡的教材、網上的教程大都以ANSI C為基礎進行講解,C語言中文網也不例外,也以ANSI C為基礎。

在程式中使用的變數名、函數名、標號等統稱為標識符。除庫函數的函數名由系統定義外,其餘都由使用者自訂。

科普一下:

C語言於1972年11月問世,1978年美國電話電報公司(AT&T)貝爾實驗室正式發布C語言,1983年由美國國家標準局 (American National Standards Institute,簡稱ANSI)開始制定C語言標準,於1989年12月完成,並在1990年春天發布,稱之為ANSI C,有時也被稱為 C89 或 C90。


C語言之父——裡奇


在學習C語言之前,我們先瞭解一下C語言的曆史。

C語言是一門通用的,模組化,程式化的程式設計語言,被廣泛應用於作業系統和應用軟體的開發。由於其高效和可移植性,適應於不同硬體和軟體平台,深受開發員的青睞。

C語言早期發展

1969-1973年在美國電話電報公司(AT&T)貝爾實驗室開始了C語言的最初研發。根據C語言的發明者丹尼斯·裡奇 (Dennis Ritchie) 說,C 語言最重要的研發時期是在1972年。

說明:丹尼斯·裡奇(Dennis Ritchie),C語言之父,UNIX之父。1978年與布萊恩·科爾尼幹(Brian Kernighan)一起出版了名著《C程式設計語言(The C Programming Language)》,現在此書已翻譯成多種語言,成為C語言方面最權威的教材之一。2011年10月12日(北京時間為10月13日),丹尼斯·裡奇去世,享年70歲。

C語言之所以命名為C,是因為C語言源自Ken Thompson發明的 B語言,而B語言則源自BCPL語言。

C語言的誕生是和UNIX作業系統的開發密不可分的,原先的UNIX作業系統都是用組合語言寫的,1973年UNIX作業系統的核心用C語言改寫,從此以後,C語言成為編寫作業系統的主要語言。

K&R C

1978年,丹尼斯·裡奇(Dennis Ritchie)和布萊恩·科爾尼幹(Brian Kernighan)出版了一本書,名叫《The C Programming Language》(中文譯名為《C程式設計語言》)。這本書被C語言開發人員們稱為“K&R”,很多年來被當作C語言的非正式的標準說明。人們稱這個版本的C語言為“K&R C”。

1988年丹尼斯·裡奇(Dennis Ritchie)和布萊恩·科爾尼幹(Brian Kernighan)修改此書,出版了《The C Programming Language》第二版,第二版涵蓋了ANSI C語言標準。第二版從此成為大學電腦教育有關C語言的經典教材,多年後也沒再出現過更好的版本。

ANSI C 和 ISO C

1970到80年代,C語言被廣泛應用,從大型主機到小型微機,也衍生了C語言的很多不同版本。

為統一C語言版本,1983年美國國家標準局(American National Standards Institute,簡稱ANSI)成立了一個委員會,來制定C語言標準。1989年C語言標準被批准,被稱為ANSI X3.159-1989 "Programming Language C"。這個版本的C語言標準通常被稱為ANSI C。又由於這個版本是 89 年完成制定的,因此也被稱為 C89。

後來 ANSI 把這個標準提交到 ISO(國際化標準組織),1990年被 ISO 採納為國際標準,稱為 ISO C。又因為這個版本是1990年發布的,因此也被稱為C90。

ANSI C(C89) 與 ISO C(C90)內容基本相同,主要是格式組織不一樣。

因為 ANSI 與 ISO 的C標準內容基本相同,所以對於C標準,可以稱為ANSI C,也可以說是ISO C,或者 ANSI / ISO C。

注意:以後大家看到 ANSI C、ISO C、C89、C90,要知道這些標準的內容都是一樣的。

目前,幾乎所有的開發工具都支援 ANSI / ISO C 標準。是C語言用得最廣泛的一個標準版本。

C99

在ANSI C標準確立之後,C語言的規範在很長一段時間內都沒有大的變動。1995年C程式設計語言工作群組對 C語言進行了一些修改,成為後來的1999年發布的 ISO/IEC 9899:1999標準,通常被成為C99。

但是各個公司對C99的支援所表現出來的興趣不同。當GCC和其它一些商業編譯器支援C99的大部分特性的時候,微軟和Borland卻似乎對此不感興趣。

說明:GCC(GNU Compiler Collection,GNU編譯器集合)是一套由GNU工程開發的支援多種程式設計語言的編譯器。

綜上所述,目前廣泛使用的C語言版本是 ANSI / ISO C,最經典的C語言教材是《C程式設計語言(The C Programming Language) 第二版》。


C語言版本更迭史C語言對其它語言的影響

很多程式設計語言都深受C語言的影響,比如C++(原先是C語言的一個擴充)、C#、Java、PHP、Javascript、Perl、LPC和UNIX的C Shell等。

也正因為C語言的影響力,掌握C語言的人,再學其它程式設計語言,大多能很快上手,觸類旁通,很多大學將C語言作為電腦教學的入門語言。

 

2. 標識符

 

C語言規定,標識符只能是字母(A~Z, a~z)、數字(0~9)和底線(_)組成的字串,並且其第一個字元必須是字母或底線。 以下標識符是合法的: a, x,  x3, BOOK_1, sum5 以下標識符是非法的: 3s    以數字開頭 s*T    出現非法字元* -3x    以減號(-)開頭 bowy-1    出現非法字元減號(-)

在fedora 21 裡面不限制標識符的長度,但它不受gcc編譯器限制,代碼正常執行。

1 #include<stdio.h>2 int main()3 {4     int abcdefgsjdfshfkshfkshfkjshifhweiuthrewuiriweuhriuwehweudefgsjdfshfkshfkshfkjshifhweiuthrewuiriweuhriuwehweudefgsjdfshfkshfkshfkjshifhweiuthrewuiriweuhriuwehweudefgsjdfshfkshfkshfkjshifhweiuthrewuiriweuhriuwehweudefgsjdfshfkshfkshfkjshifhweiuthrewuiriweuhriuwehweudefgsjdfshfkshfkshfkjshifhweiuthrewuiriweuhriuwehweudefgsjdfshfkshfkshfkjshifhweiuthrewuiriweuhriuwehweuihgfdiwehfuiwehfuiwehfiwehfiewhfiuhweihsiuhf=0;5     printf("hello world");6     return 0;7 }

3. 關鍵字

關鍵字是由C語言規定的具有特定意義的字串,通常也稱為保留字。使用者定義的標識符不應與關鍵字相同。

C語言的關鍵字分為以下幾類:

分類 說明
類型說明符  用於定義、說明變數、函數或其它資料結構的類型。如前面例題中用到的int、double等。
語句定義符 用於表示一個語句的功能。如【例1-3】中用到的if else就是條件陳述式的語句定義符。
預先處理命令字 用於表示一個預先處理命令。如前面各例中用到的include。
4. 運算子

C語言中含有相當豐富的運算子。運算子與變數,函數一起組成運算式,表示各種運算功能。運算子由一個或多個字元組成,如加號(+)、減號(-)、乘號(*)等。

5. 分隔字元

在C語言中採用的分隔字元有逗號(,)和空格兩種。逗號主要用在類型說明和函數參數表中,分隔各個變數。空格多用於語句各單詞之間,作間隔符。在關鍵字,標識符之間必須要有一個以上的空格符作間隔,否則將會出現語法錯誤,例如把 int a; 寫成 inta; C語言編譯器會把 inta 當成一個標識符處理,其結果必然出錯。

6. 常量

常量是值不能被改變的量。C語言中使用的常量可分為數字常量、字元常量、字串常量、符號常量、逸出字元等多種。在後面章節中將專門給予介紹。

7.變數

變數由使用者自己命名,用來儲存特定類型的資料,資料可以被改變。資料類型有整數、浮點數、字元等,將在後面章節進行介紹。

8. 注釋

標準C語言的注釋是以“/*”開頭並以“*/”結尾的串。在“/*”和“*/”之間的即為注釋。程式編譯時間,不對注釋作任何處理。注釋可出現在程式中的任何位置。注釋用來向使用者提示或解釋程式的意義。在偵錯工具中對暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理,待調試結束後再去掉注釋符。

另外,各種編譯器都支援以“//”開頭的注釋,雖然它不是標準C的規定,但是早已成為事實標準,在程式中廣泛使用。“//”僅支援單行注釋,也就是說,注釋中不能出現分行符號;而“/*  */”支援多行注釋,注釋中可以出現分行符號。

C語言基本概念

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.