C語(yǔ)言程序設(shè)計(jì)(譚浩強(qiáng))_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)(譚浩強(qiáng))_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)(譚浩強(qiáng))_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)(譚浩強(qiáng))_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)(譚浩強(qiáng))_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——C語(yǔ)言程序設(shè)計(jì)(譚浩強(qiáng))

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

C語(yǔ)言設(shè)計(jì)

學(xué)習(xí)筆記

早晨:06:40起床

07:20——08:20

上午:08:30——10:30

10:50——11:30

中午:12:00——02:00

下午:02:30——04:30

晚上:05:30——08:00

08:00——09:00

09:00——11:00

11:30

英語(yǔ)1小時(shí)新概念英語(yǔ)(單詞、語(yǔ)法、聽讀背)大學(xué)英語(yǔ)(單詞、語(yǔ)法、聽讀背)計(jì)算機(jī)基礎(chǔ)2小時(shí)計(jì)算機(jī)科學(xué)技術(shù)導(dǎo)論計(jì)算機(jī)組成原理微機(jī)原理及接口技術(shù)Intel微處理器結(jié)構(gòu)編程與接口深入理解計(jì)算機(jī)系統(tǒng)80x86匯編語(yǔ)言程序設(shè)計(jì)8086-8088宏匯編語(yǔ)言程序設(shè)計(jì)教程BIOS研發(fā)技術(shù)剖析自己動(dòng)手寫操作系統(tǒng)操作系統(tǒng)原理Windows操作系統(tǒng)原理Windows內(nèi)部原理系列Windows程序內(nèi)部運(yùn)行原理計(jì)算機(jī)網(wǎng)絡(luò)第五版午休計(jì)算機(jī)應(yīng)用及編程Windows用戶管理指南、AD配置指南、網(wǎng)絡(luò)專業(yè)指南、Windows即學(xué)即會(huì)教程Windows下32位匯編語(yǔ)言程序設(shè)計(jì)、C#編程鍛煉、晚餐輔導(dǎo)專業(yè)基礎(chǔ)2小時(shí)大學(xué)數(shù)學(xué)、大學(xué)物理、電機(jī)及拖動(dòng)、電力電子技術(shù)、通信技術(shù)休息

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

目錄

第一章C語(yǔ)言概述-1-

1.1C程序結(jié)構(gòu)特點(diǎn)16-1-

1.2C程序上機(jī)步驟17-1-

其次章程序的靈魂——算法23-2-

2.1算法24-2-

2.2算法的三種基本結(jié)構(gòu)-2-

2.3結(jié)構(gòu)化程序設(shè)計(jì)方法42-2-

第三章數(shù)據(jù)類型運(yùn)算符與表達(dá)式48-2-

3.1C語(yǔ)言的基本元素48-2-

3.2C的數(shù)據(jù)類型48-2-

3.3常量與變量48-3-

3.4基本類型-3-

3.5變量63-4-

3.6不同類型數(shù)據(jù)間的混合運(yùn)算-5-

3.7函數(shù)的調(diào)用過程(補(bǔ)充)-5-

第四章最簡(jiǎn)單的C程序設(shè)計(jì)——順序程序設(shè)計(jì)77-5-

4.1字符數(shù)據(jù)的輸入輸出-5-

第五章選擇結(jié)構(gòu)的程序設(shè)計(jì)97-6-

第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)-6-

6.1語(yǔ)句標(biāo)號(hào)-6-

6.2break語(yǔ)句和continue語(yǔ)句-6-

第七章數(shù)組132-6-

7.1構(gòu)造類型-6-

7.2數(shù)組133-6-

7.3二維數(shù)組-6-

7.4字符串——字符數(shù)組-7-

7.5字符串處理函數(shù)#includestring.h-7-

第八章函數(shù)153-8-

8.1c程序的結(jié)構(gòu)154-8-

8.2函數(shù)調(diào)用參數(shù)傳遞-8-

8.3函數(shù)變量的作用范圍-8-

8.4變量的存儲(chǔ)類別-8-

第九章預(yù)處理命令197-9-

9.1預(yù)編譯命令作用-9-

第十章指針211-10-

10.1變量的訪問方式-10-10.2指針變量-10-第十一章結(jié)構(gòu)體270-11-

11.1結(jié)構(gòu)體270-11-

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

11.2聲明結(jié)構(gòu)體類型變量的方法271-11-11.3結(jié)構(gòu)體變量引用273-11-11.4結(jié)構(gòu)體變量初始化-12-11.5結(jié)構(gòu)體數(shù)組275-12-11.6結(jié)構(gòu)體類型指針-12-11.7鏈表283-12-11.8共用體297-13-11.9枚舉類型301-13-11.10用typedef定義的類型304-14-第十二章位運(yùn)算308-14-

12.1位段315-14-第十三章文件319-14-

13.1文件319-14-13.2文件的分類319-15-13.3C語(yǔ)言對(duì)文件的處理方法319-15-13.4文件結(jié)構(gòu)體類型321-15-13.5文件結(jié)構(gòu)體數(shù)組和指針321-16-13.6文件的操作321-16-13.7文件的定位333-17-13.8出錯(cuò)檢測(cè)335-18-13.9小結(jié)336-18-第十四章C++對(duì)C的擴(kuò)展338-19-

14.1C++的特點(diǎn)338-19-14.2C++的輸入輸出339-19-14.3C++的輸出cout-19-14.4C++的輸入cin341-21-14.4函數(shù)的重載342-21-14.5帶缺省參數(shù)的函數(shù)344-21-14.6變量的引用類型345-22-14.7內(nèi)置函數(shù)348-23-14.8作用域運(yùn)算符349-24-

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

第一章C語(yǔ)言概述

1.1C程序結(jié)構(gòu)特點(diǎn)16

1、C程序的基本構(gòu)件——函數(shù)。

2、一個(gè)函數(shù)由函數(shù)首部和函數(shù)體兩部分構(gòu)成。

函數(shù)首部一般包括函數(shù)類型、函數(shù)名、函數(shù)參數(shù)等。

函數(shù)體一般包括聲明部分和執(zhí)行部分。其中:在聲明部分中定義所用到的變量;執(zhí)行部分則由若干個(gè)語(yǔ)句組成。

3、C程序只有一個(gè)main函數(shù),且總是從main函數(shù)開始執(zhí)行。

4、C語(yǔ)言語(yǔ)句必需以“;〞終止。

5、用/**/作為解釋。

6、C編譯器一般自頂向下順序編譯C源程序,假使被調(diào)函數(shù)定義在主調(diào)函數(shù)之后位置時(shí),要在主調(diào)函數(shù)前,給出被調(diào)函數(shù)的原型說(shuō)明。以便編譯器在編譯被調(diào)函數(shù)的調(diào)用語(yǔ)句時(shí),對(duì)調(diào)用語(yǔ)句進(jìn)行參數(shù)檢查。

假使不進(jìn)行原型說(shuō)明,則無(wú)法通過編譯檢查。

原型說(shuō)明:類型說(shuō)明函數(shù)名(參數(shù)類型,參數(shù)類型,)

7、頭文件——頭文件包含了C語(yǔ)言的標(biāo)準(zhǔn)函數(shù)庫(kù)的原型說(shuō)明。

C語(yǔ)言通過使用#include預(yù)處理命令,將庫(kù)函數(shù)的原型說(shuō)明插入到源文件中。

1.2C程序上機(jī)步驟17

1、編輯源文件.c;

2、編譯成目標(biāo)文件.obj;

3、連接——將目標(biāo)程序和庫(kù)函數(shù)及其

他目標(biāo)程序連接起來(lái),生產(chǎn)可執(zhí)行文件,文

件擴(kuò)展名為.exe;

4、執(zhí)行。

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

其次章程序的靈魂——算法23

2.1算法24

1、算法——指為求解某一問題而采用的具體方法和步驟。

2、兩類算法——數(shù)值運(yùn)算算法和非數(shù)值運(yùn)算算法

3、算法的特性——有窮性、確定性、有效性等

4、算法描述——文字描述法(如偽代碼描述算法)、圖形描述法(如流程圖和NS流程圖描述算法)。

2.2算法的三種基本結(jié)構(gòu)

順序、選擇、循環(huán)

2.3結(jié)構(gòu)化程序設(shè)計(jì)方法42

1、自頂向下——首先對(duì)問題進(jìn)行分析,確定算法思路。

2、逐步細(xì)化——根據(jù)算法思路,制定原始算法流程,并不斷細(xì)化流程。

3、模塊設(shè)計(jì)——分解算法流程,將功能相對(duì)獨(dú)立的部分劃分為一個(gè)模塊。

4、結(jié)構(gòu)化編碼——利用高級(jí)語(yǔ)言正確實(shí)現(xiàn)3種基本結(jié)構(gòu)。

第三章數(shù)據(jù)類型運(yùn)算符與表達(dá)式48

3.1C語(yǔ)言的基本元素48

1、符號(hào)集——C語(yǔ)言使用的基本符號(hào)。

2、標(biāo)識(shí)符——用來(lái)標(biāo)記常量、變量、函數(shù)及文件名字的字符序列。

3、關(guān)鍵字——C程序規(guī)定的,具有特定含義、專門用作語(yǔ)言特定成分的一類標(biāo)識(shí)符。ANSI推薦的C語(yǔ)言關(guān)鍵字是32個(gè)。關(guān)鍵字全部應(yīng)當(dāng)小寫。

3.2C的數(shù)據(jù)類型48

數(shù)據(jù)是操作的對(duì)象,數(shù)據(jù)類型是指數(shù)據(jù)的內(nèi)在表現(xiàn)形式。如(數(shù)據(jù)代碼、存儲(chǔ)、運(yùn)算)。

1、基本類型:整型、字符型、實(shí)型。

2、構(gòu)造類型:在基本類型的基礎(chǔ)上,依照某種構(gòu)成規(guī)則構(gòu)造而成的類型。數(shù)組、

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

結(jié)構(gòu)體、共用體、枚舉型。

3、指針類型:用于存儲(chǔ)地址的一類數(shù)據(jù)類型。

4、空類型:

編譯器根據(jù)變量的數(shù)據(jù)類型,給變量分派存儲(chǔ)單元。

3.3常量與變量48

1、符號(hào)常量——符號(hào)常量在其作用域內(nèi)不能改變,也不能被賦值。

2、變量——變量由變量名和變量值標(biāo)識(shí)。

變量名實(shí)際上是一個(gè)符號(hào)地址,編譯連接程序時(shí)給每個(gè)變量名分派一個(gè)內(nèi)存

地址,當(dāng)程序訪問變量值時(shí),實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從其存儲(chǔ)單元中讀取數(shù)據(jù)。

3.4基本類型

1、整形數(shù)據(jù)在內(nèi)存中的存放,是以補(bǔ)碼形式存放的。

2、實(shí)型數(shù)據(jù):?jiǎn)尉入p精度。

在內(nèi)存中以指數(shù)形勢(shì)存放。

若數(shù)據(jù)超過有效位,則超過C語(yǔ)言規(guī)定有效位的數(shù)據(jù)將被舍去,故產(chǎn)生誤差。

3、字符型數(shù)據(jù):用一個(gè)字節(jié)存儲(chǔ)單元存儲(chǔ)。即將字符的ASCII碼存儲(chǔ)到內(nèi)存單元中。

用單引號(hào)括起來(lái)的一個(gè)字符。

轉(zhuǎn)義字符——特別字符常量或者控制字符常量,它們都以“\〞開頭。

Char、unsignedchar區(qū)別:char用7位數(shù)表示,最大表示編碼為127的字符;

unsignedchar用8位數(shù)表示,最大表示編碼為255的字符。

字符數(shù)據(jù)與整型數(shù)據(jù)可以相互賦值。

字符數(shù)據(jù)可以以字符數(shù)據(jù)輸出,也可以以整型數(shù)據(jù)形式輸出。

4、字符串常量:C語(yǔ)言中,必需是用字符數(shù)組來(lái)保存字符串常量。在內(nèi)存中順序存儲(chǔ)。

用一對(duì)雙引號(hào)括起來(lái)的字符序列。

每個(gè)字符串常量結(jié)尾以一個(gè)字符\0作為終止標(biāo)記。(一般由系統(tǒng)自動(dòng)加上)。

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

3.5變量63

1、自動(dòng)變量——在函數(shù)體內(nèi)或復(fù)合語(yǔ)句中定義的非靜態(tài)變量稱為自動(dòng)變量。C語(yǔ)言編譯時(shí),不對(duì)自動(dòng)變量賦初值。

當(dāng)程序執(zhí)行到自動(dòng)變量的作用域時(shí),程序才為自動(dòng)變量分派空間。當(dāng)定義自

動(dòng)變量的函數(shù)或復(fù)合語(yǔ)句執(zhí)行終止后,程序釋放自動(dòng)變量的存儲(chǔ)空間。

自動(dòng)變量保存在程序的動(dòng)態(tài)存儲(chǔ)空間。

2、靜態(tài)局部變量——在函數(shù)體內(nèi)或復(fù)合語(yǔ)句中用static定義的變量稱為靜態(tài)局部變量。

C語(yǔ)言編譯時(shí),對(duì)靜態(tài)局部變量賦初值。

靜態(tài)局部變量存儲(chǔ)在程序的靜態(tài)存儲(chǔ)空間。

靜態(tài)局部變量在程序的整個(gè)運(yùn)行期間均占用程序的靜態(tài)存儲(chǔ)空間,直到程序

退出后才釋放存儲(chǔ)空間。

3、寄放器變量——用register聲明的變量。

4、外部變量(全局變量)——在函數(shù)的外部定義的變量。它的作用域是從定義處開始,到本程序文件的末尾終止,在此作用域內(nèi),全局變量可以為程序的各個(gè)函數(shù)引用。

C語(yǔ)言編譯時(shí),對(duì)全局變量賦初值。

全局變量存儲(chǔ)在程序的靜態(tài)存儲(chǔ)空間。

全局變量在程序的整個(gè)運(yùn)行期間均占用程序的靜態(tài)存儲(chǔ)空間,直到程序退出

后才釋放存儲(chǔ)空間。

注意:

(1)當(dāng)引用來(lái)源文件后面定義的全局變量或引用在其他源文件中定義的全局變量是,應(yīng)在引用位置前,利用extern聲明該全局變量,以告訴編譯器編譯時(shí),引用的是一個(gè)外部變量,在編譯器連接時(shí),將引用的外部變量的作用域擴(kuò)展到本文件extern聲明處。

(2)用static聲明的全局變量,不能被其他文件引用。

注意:

(1)變量聲明分為定義性聲明和引用性聲明。

(2)一般把建立存儲(chǔ)空間的聲明稱為變量定義,把不需要建立存儲(chǔ)空間的聲明成為變量聲明。

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

3.6不同類型數(shù)據(jù)間的混合運(yùn)算

不同類型數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,依照

類型級(jí)別由低到高(char,short—int——unsigned—long—double;float—double)的順序進(jìn)行轉(zhuǎn)換。

強(qiáng)制類型轉(zhuǎn)換——(類型名)表達(dá)式。強(qiáng)制類型轉(zhuǎn)換也就是將存儲(chǔ)數(shù)據(jù)的

內(nèi)存單元強(qiáng)制轉(zhuǎn)換為另一種數(shù)據(jù)類型的單元大小。即強(qiáng)制將存放數(shù)據(jù)的內(nèi)存單元改變。

賦值時(shí)進(jìn)行類型轉(zhuǎn)換:將數(shù)據(jù)復(fù)制給變量時(shí),將會(huì)將數(shù)據(jù)強(qiáng)制轉(zhuǎn)換為要賦值

變量的類型。一般短類型轉(zhuǎn)換為長(zhǎng)類型時(shí),進(jìn)行符號(hào)擴(kuò)展;長(zhǎng)類型轉(zhuǎn)換為短類型時(shí),僅賦值低位,難以保證數(shù)據(jù)的正確性。

3.7函數(shù)的調(diào)用過程(補(bǔ)充)

C函數(shù)其實(shí)就是一個(gè)程序模塊。

C函數(shù)在編譯時(shí),單獨(dú)編譯成一個(gè)指令模塊,在函數(shù)模塊開始處定義保護(hù)現(xiàn)

場(chǎng)指令,將用到的CPU寄放器壓入堆棧。在返回時(shí)定義了恢復(fù)現(xiàn)場(chǎng)指令,將堆棧數(shù)據(jù)恢復(fù)到CPU寄放器。

在調(diào)用函數(shù)時(shí),一般利用堆棧傳遞輸入?yún)?shù);利用EAX傳遞輸出參數(shù),注

意在函數(shù)調(diào)用完成后,要維持堆棧平衡,且函數(shù)返回輸出參數(shù)在EAX中,在使用輸出參數(shù)前,不要改變EAX的值。

第四章最簡(jiǎn)單的C程序設(shè)計(jì)——順序程序設(shè)計(jì)77

4.1字符數(shù)據(jù)的輸入輸出

1、C語(yǔ)言沒有輸入輸出語(yǔ)句,IO操作通過調(diào)用系統(tǒng)函數(shù)實(shí)現(xiàn)。

2、在程序的開頭,要有:#include“stdio.h〞或#includestdio.h,預(yù)定義語(yǔ)句,用來(lái)引用頭文件,在編譯時(shí)將頭文件中的函數(shù)原型聲明添加到源文件中。

默認(rèn)輸出設(shè)備——顯示屏,默認(rèn)輸入設(shè)備——鍵盤。

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

第五章選擇結(jié)構(gòu)的程序設(shè)計(jì)97

第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)

6.1語(yǔ)句標(biāo)號(hào)

語(yǔ)句標(biāo)號(hào)——用于定義程序中的某個(gè)位置,用標(biāo)識(shí)符表示,不能只用數(shù)字。

6.2break語(yǔ)句和continue語(yǔ)句

1、break語(yǔ)句終止循環(huán)語(yǔ)句和switch語(yǔ)句。

2、continue終止本次循環(huán),即忽略循環(huán)體中剩余的語(yǔ)句。

第七章數(shù)組132

7.1構(gòu)造類型

構(gòu)造類型——是由基本類型依照一定規(guī)則構(gòu)造而成的。(如數(shù)組、結(jié)構(gòu)體、共同體、枚舉型)

構(gòu)造類型的每個(gè)分量(元素),是一個(gè)變量,它可以是一個(gè)簡(jiǎn)單類型或者構(gòu)造類型。

構(gòu)造類型的分量占用相鄰的存儲(chǔ)空間。

7.2數(shù)組133

1、數(shù)組——是有序數(shù)據(jù)的集合,數(shù)據(jù)元素類型一致,順序存儲(chǔ),占用相鄰的存儲(chǔ)空間。

2、數(shù)組——數(shù)組必需先定義后引用。靜態(tài)數(shù)組變量定義時(shí)編譯器自動(dòng)初始化數(shù)據(jù)元素為0,動(dòng)態(tài)數(shù)組變量在程序執(zhí)行時(shí)分派存儲(chǔ)空間,在未被賦值初始化之前其值隨機(jī)。

3、C語(yǔ)言只能逐個(gè)引用數(shù)組元素,不能一次引用整個(gè)數(shù)組。

4、數(shù)組引用是“數(shù)組名+下標(biāo)〞引用,數(shù)組下標(biāo)均為整數(shù)。如a[2]。

7.3二維數(shù)組

1、數(shù)組元素為數(shù)組。

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

2、在內(nèi)存中,C語(yǔ)言的二維數(shù)組中數(shù)組元素的存放順序是按行存放的。

3、二維數(shù)組引用是“數(shù)組名+下標(biāo)+下標(biāo)〞。如a[1][2]。

7.4字符串——字符數(shù)組

1、一般用\0來(lái)標(biāo)識(shí)字符串結(jié)尾。\0占用一個(gè)字符變量空間。

2、用字符串賦值字符數(shù)組時(shí),C編譯器在字符串后自動(dòng)加\0賦給字符數(shù)字。

3、字符數(shù)組可以一次引用整個(gè)字符串?dāng)?shù)組。如整個(gè)字符串(數(shù)組)的輸入輸出,用%s格式,且在輸入字符數(shù)組時(shí),用數(shù)組名代表數(shù)組的首地址,對(duì)于二維數(shù)組,僅僅寫行下標(biāo)不寫列下標(biāo),也可以代表給行數(shù)組的首地址。

在用%s輸入輸出字符串?dāng)?shù)組時(shí),遇到\0終止。

7.5字符串處理函數(shù)#includestring.h

1、gets(字符數(shù)組名)

從鍵盤輸入一個(gè)字符串(以回車終止),并返回字符數(shù)組的起始地址。

如get(str)。

2、puts(字符數(shù)組名/字符串)

將數(shù)組中的字符串(\0結(jié)尾的字符序列)輸出到終端上,輸完換行。

如puts(str),puts(“ok〞)。

3、strcpy(目的字符數(shù)組1名,源字符串/字符數(shù)組2名)

拷貝時(shí),將“\0〞一起拷貝過去。

4、strcat(字符數(shù)組1名,字符串/字符數(shù)組2名)

將字符串/字符數(shù)組2連接到字符數(shù)組1中。

連接時(shí),編譯器去掉字符數(shù)組1的“\0〞。

5、strcmp(字符串/字符數(shù)組1名,字符串/字符數(shù)組2名)

比較字符串/字符數(shù)組1名和字符串/字符數(shù)組2名的大小。

字符串/字符數(shù)組1字符串/字符數(shù)組2,返回正數(shù)

字符串/字符數(shù)組1=字符串/字符數(shù)組2,返回0

字符串/字符數(shù)組1字符串/字符數(shù)組2,返回負(fù)數(shù)。

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

第八章函數(shù)153

8.1c程序的結(jié)構(gòu)154

1、一個(gè)C程序可以分為若干個(gè)函數(shù)。

2、每個(gè)程序只能有一個(gè)主函數(shù),C程序的執(zhí)行從main函數(shù)開始,從main函數(shù)終止。

3、函數(shù)間可以相互調(diào)用,但主函數(shù)不能被調(diào)用。

4、從用戶角度看,函數(shù)可分為標(biāo)準(zhǔn)函數(shù)(庫(kù)函數(shù))和自定義函數(shù)。其中,編譯器僅編譯自定義函數(shù),在連接時(shí)才將標(biāo)準(zhǔn)庫(kù)函數(shù)的目標(biāo)代碼連接到程序。

5、一個(gè)C源程序由一個(gè)或多個(gè)文件構(gòu)成,一個(gè)源程序文件是一個(gè)編譯單位。

8.2函數(shù)調(diào)用參數(shù)傳遞

1、值傳遞——如數(shù)值形參。此時(shí),將實(shí)參值復(fù)制壓棧,被調(diào)函數(shù)對(duì)復(fù)制到棧中的數(shù)值進(jìn)行操作,不改變?cè)瓉?lái)實(shí)參值。

2、地址傳遞——如數(shù)組形參(指針形參),此時(shí),將實(shí)參數(shù)組的首地址壓棧,被調(diào)函數(shù)引用實(shí)參數(shù)組的首地址,找到實(shí)參數(shù)組,對(duì)實(shí)參數(shù)組進(jìn)行操作,改變實(shí)參數(shù)組值。即形參數(shù)組和實(shí)參數(shù)組共享同一單元。

8.3函數(shù)變量的作用范圍

1、局部變量——在定義局部變量的范圍內(nèi)有效。當(dāng)局部變量重名時(shí),有效范圍小的優(yōu)先。

在函數(shù)內(nèi)部定義局部變量

函數(shù)的形式參數(shù)

在某個(gè)復(fù)合語(yǔ)句中定義的變量。

2、全局變量——在函數(shù)之外定義的變量。有效范圍是從定義變量的位置開始到源文件終止。

8.4變量的存儲(chǔ)類別

變量的存儲(chǔ)類別,即生存期。內(nèi)存中供用戶使用的存儲(chǔ)空間包括:程序區(qū)、靜態(tài)存儲(chǔ)區(qū)、動(dòng)態(tài)存儲(chǔ)區(qū)。

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

1、靜態(tài)存儲(chǔ)區(qū)——在編譯時(shí)分派空間,在程序運(yùn)行完后才釋放存儲(chǔ)空間。存儲(chǔ)靜態(tài)局部變量和全局變量。

局部靜態(tài)變量在編譯時(shí)賦初值,在執(zhí)行時(shí)可改變?cè)撝?,但該存?chǔ)空間一直保

存到程序終止。

定義局部靜態(tài)變量,假使沒有賦初值,編譯時(shí)會(huì)自動(dòng)賦默認(rèn)初值。

局部靜態(tài)變量只能在定義它的函數(shù)中使用。

全局變量都是靜態(tài)的。

利用extern外部變量方式表示變量的定義在別的文件中,提醒編譯器遇到此

變量時(shí),在其他模塊中尋覓其定義。而函數(shù)則是利用函數(shù)原型來(lái)聲明。

用static關(guān)鍵字說(shuō)明一個(gè)不能在其他源文件中引用的全局變量。即靜態(tài)全局

變量在聲明它的整個(gè)文件都是可見的,但是在文件之外是不可見的。

2、動(dòng)態(tài)存儲(chǔ)區(qū)——僅在在執(zhí)行時(shí)分派空間,用完后釋放存儲(chǔ)空間。存放自動(dòng)變量和形式參數(shù)。

寄放器變量——用register關(guān)鍵字說(shuō)明。寄放器變量對(duì)寄放器的占用是動(dòng)態(tài)

的。

第九章預(yù)處理命令197

9.1預(yù)編譯命令作用

預(yù)編譯命令主要完成宏定義、文件包含、條件編譯三種功能。

1、宏定義——指用一個(gè)指定的標(biāo)識(shí)符(名字)來(lái)代表一個(gè)字符串。在預(yù)編譯時(shí),將宏名替代成字符串的過程稱為宏展開。如:

#definePI3.1415926定義宏,

#undefPI終止宏定義的作用域。

#defineV(a,b,c)a*b*c定義帶參數(shù)的宏。當(dāng)宏展開時(shí),將引用宏名語(yǔ)句中的

實(shí)參字符串代替宏定義的形參字符串。

intv=V(2,3,4)則宏展開后為:intv=2*3*4;

2、文件包含——指一個(gè)源文件可以將另一個(gè)源文件的全部?jī)?nèi)容包含進(jìn)來(lái)。如:#include“文件名〞或

#include文件名

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

編譯預(yù)處理時(shí),將包含文件的全部?jī)?nèi)容復(fù)制到源文件中。在編譯時(shí)作為一個(gè)

源程序來(lái)編譯。

3、條件編譯——在預(yù)編譯處理時(shí),確定編譯時(shí)要編譯的部分。如:

#ifdef標(biāo)識(shí)符

程序段1

#else

程序段2

#endif

#if表達(dá)式

程序段1

#else

程序段2

#endif

第十章指針211

10.1變量的訪問方式

1、直接訪問——如:inta=10;

2、間接訪問——定義一個(gè)指針變量p,存放變量a的首地址,通過p訪問變量a。則稱指針變量p指向變量a。

如:inta=10;int*p1;p=a;b=*p1;或*p1=100;等價(jià)于a=100;

10.2指針變量

1、指針變量的類型——是指該變量指向的內(nèi)存數(shù)據(jù)的數(shù)據(jù)類型。

2、必需用引用變量的地址給指針變量賦值。

3、可以給指針變量賦值空值null,防止指針變量存儲(chǔ)隨機(jī)值導(dǎo)致系統(tǒng)錯(cuò)誤。

4、數(shù)組名代表數(shù)據(jù)的首地址。數(shù)組指針或數(shù)組名+1,指向下一個(gè)數(shù)組元素的存儲(chǔ)地址。

聲明格式:數(shù)據(jù)類型*p;

賦值格式:p=a;或p=a[0];

引用格式:*p=常量;等價(jià)于p[0]=常量;等價(jià)于a[0]=常量;等價(jià)于*a=常量;

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

*(p+1)=常量;等價(jià)于p[1]=常量;等價(jià)于a[1]=常量;

等價(jià)于*(a+1)=常量;

5、數(shù)組名和指針變量雖然都可以代表數(shù)組的首地址,但是指針變量值可以改變,而數(shù)組名的值不可以改變。

6、函數(shù)的指針專門用來(lái)存放函數(shù)的入口地址,當(dāng)把函數(shù)的地址賦值給它時(shí),它就指向該函數(shù)的入口地址。

聲明格式:數(shù)據(jù)類型(*指針變量名)()如:int(*P)();

賦值格式:p=max;注max為定義的函數(shù)名;函數(shù)名代表該函數(shù)的入口地址。引用格式:c=(*p)(a,b);等價(jià)——c=max(a,b);

7、只能將變量已分派的地址賦值給指針變量,不能直接將整數(shù)賦值給指針變量。

8、指針變量可以有null值,防止指針誤作用。

第十一章結(jié)構(gòu)體270

11.1結(jié)構(gòu)體270

1、作用——將不同類型的數(shù)據(jù)組合成一個(gè)有機(jī)的整體。

2、結(jié)構(gòu)體的定義——結(jié)構(gòu)體是一種數(shù)據(jù)結(jié)構(gòu),依照某種規(guī)則定義,將若干個(gè)不同數(shù)據(jù)類型(也可一致)的數(shù)據(jù)項(xiàng)的組合成的一個(gè)有機(jī)整體。

3、聲明結(jié)構(gòu)體類型的形式:struct結(jié)構(gòu)體類型名字{成員列表};

成員列表形式:類型符成員名如:intnum;

11.2聲明結(jié)構(gòu)體類型變量的方法271

1、先定義結(jié)構(gòu)體類型:struct結(jié)構(gòu)體類型名字{成員列表};再定義結(jié)構(gòu)體變量:struct結(jié)構(gòu)體類型名字結(jié)構(gòu)體變量名。

2、可在定義結(jié)構(gòu)體類型時(shí),定義結(jié)構(gòu)體類型變量。struct結(jié)構(gòu)體類型名字{成員列表}結(jié)構(gòu)體類型變量1,結(jié)構(gòu)體類型變量2,;

11.3結(jié)構(gòu)體變量引用273

1、不能將一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體進(jìn)行輸入輸出,只能對(duì)結(jié)構(gòu)體變量成員分別賦值。

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

2、結(jié)構(gòu)體變量成員引用方式:結(jié)構(gòu)體變量名.成員名

3、假使結(jié)構(gòu)體變量成員是另一個(gè)結(jié)構(gòu)體變量,則要用若干個(gè)成員運(yùn)算符,一級(jí)一級(jí)找到最低一級(jí)的成員。

11.4結(jié)構(gòu)體變量初始化

1、在聲明變量時(shí)整體賦值。

2、復(fù)制一致結(jié)構(gòu)的變量賦值。

3、除以上兩種狀況下可以對(duì)結(jié)構(gòu)體類型變量整體賦值,其余狀況下只能對(duì)變量成員分別賦值。

11.5結(jié)構(gòu)體數(shù)組275

1、結(jié)構(gòu)體數(shù)組在內(nèi)存中連續(xù)存放。

2、聲明方式:與定義結(jié)構(gòu)體變量方法一致。見11.2,只是在變量名后+[n]。也可在定義結(jié)構(gòu)體數(shù)組時(shí)直接初始化結(jié)構(gòu)體數(shù)組,此時(shí)可采用+[]的形式。

3、初始化方式:同定義結(jié)構(gòu)體變量方法。

11.6結(jié)構(gòu)體類型指針

結(jié)構(gòu)體類型指針——是指指向結(jié)構(gòu)體變量所占據(jù)的內(nèi)存的起始位置的指針。聲明形式:struct結(jié)構(gòu)體類型名*指針名。如:structstudent*p;

賦值形式:指針名=結(jié)構(gòu)體變量。如:p=studengt1;

引用形式:(*P).成員名或p-成員名。*p表示指針p指向的結(jié)構(gòu)體變量。注意:

1、定義的結(jié)構(gòu)體類型,和聲明結(jié)構(gòu)體變量時(shí)不分派空間。

2、結(jié)構(gòu)體可以嵌套定義。

3、結(jié)構(gòu)體成員名可以與變量名一致。

11.7鏈表283

1、單項(xiàng)鏈表結(jié)構(gòu):鏈表有一個(gè)頭指針和表尾null指針。每個(gè)結(jié)點(diǎn)包含實(shí)際數(shù)據(jù)和下一個(gè)結(jié)點(diǎn)的地址。

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

2、可以用結(jié)構(gòu)體類型指針,將多個(gè)結(jié)構(gòu)體變量鏈接起來(lái)形成結(jié)構(gòu)體鏈表。如:

11.8共用體297

1、共用體指將幾種不同類型的變量存儲(chǔ)在同一段內(nèi)存單元中。

2、共用體變量的存儲(chǔ)單元大小等于最長(zhǎng)成員變量所占內(nèi)存的長(zhǎng)度

3、共用體變量中起作用的是最終一次存放成員。

4、共用體類型聲明方式:union公用體類型名稱{成員變量列表};

5、共用體變量聲明方式:(1)union公用體類型名稱{成員列表}共用體變量;

(2)先聲明共用體類型,然后聲明共用體變量,union公用體類型名稱共用體變量。

11.9枚舉類型301

1、枚舉類型——指將變量的值一一列舉出來(lái),變量的值只限于列舉出來(lái)的值的

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

范圍內(nèi)的一個(gè)。

2、聲明枚舉類型:enum枚舉類型名稱{枚舉常量列表};

3、聲明枚舉變量:enum枚舉類型名稱枚舉類型變量;

11.10用typedef定義的類型304

1、typedef的作用——可以用typedef聲明新的類型名來(lái)代替已有的類型名。

2、聲明方式:typedef類型名稱新的類型名稱。

第十二章位運(yùn)算308

12.1位段315

1、位段——是一種特別的數(shù)據(jù)結(jié)構(gòu),它允許定義一個(gè)由位組成段,并可為它賦以一個(gè)名字。位段一般作為結(jié)構(gòu)體的成員。

2、聲明方法:

位段結(jié)構(gòu)類型聲明方法:struct結(jié)構(gòu)體類型名稱{位段成員列表};

位段結(jié)構(gòu)成員(即位段變量)聲明方法:unsignedint位段變量:n;如:

structpacked_struct{

unsignedintf1:1;

unsignedintf2:1;

unsignedintf3:1;

unsignedinttype:4;

unsignedintindex:9;

};

3、位段結(jié)構(gòu)類型變量聲明方法:同結(jié)構(gòu)體。

4、同一位段必需存儲(chǔ)在同一個(gè)存儲(chǔ)單元中,不能跨兩個(gè)單元。

第十三章文件319

13.1文件319

1、文件——指存儲(chǔ)在外部介質(zhì)上的數(shù)據(jù)集合(數(shù)據(jù)文件),操作系統(tǒng)以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理。

個(gè)人學(xué)習(xí)譚浩強(qiáng)的c語(yǔ)言程序設(shè)計(jì)筆記

13.2文件的分類319

1、從用戶的觀點(diǎn)看:

特別文件——指標(biāo)準(zhǔn)輸入輸出文件或標(biāo)準(zhǔn)設(shè)備文件。

普通文件——指磁盤文件。

2、從操作系統(tǒng)的角度看:每一個(gè)與主機(jī)相關(guān)聯(lián)的輸入輸出設(shè)備都可看作一個(gè)文件。

(1)根據(jù)文件的組織形式分為:順序存取文件和隨機(jī)存取文件。

(2)根據(jù)文件的存儲(chǔ)形式分為:ASCII文件和二進(jìn)制文件。

13.3C語(yǔ)言對(duì)文件的處理方法319

C語(yǔ)言中對(duì)文件的存取

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論