C程序設(shè)計(jì)(第四版)總結(jié)——基于課本、條理清晰_第1頁(yè)
C程序設(shè)計(jì)(第四版)總結(jié)——基于課本、條理清晰_第2頁(yè)
C程序設(shè)計(jì)(第四版)總結(jié)——基于課本、條理清晰_第3頁(yè)
C程序設(shè)計(jì)(第四版)總結(jié)——基于課本、條理清晰_第4頁(yè)
C程序設(shè)計(jì)(第四版)總結(jié)——基于課本、條理清晰_第5頁(yè)
已閱讀5頁(yè),還剩29頁(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)介

1、煜兒出品,必屬精品你只管精彩,生命自有安排。C程序設(shè)計(jì)課本總結(jié)一、 概述(一) 程序:所謂程序,就是一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令。(二) 計(jì)算機(jī)語(yǔ)言1. 機(jī)器語(yǔ)言· 機(jī)器指令:計(jì)算機(jī)能直接識(shí)別和接受的二進(jìn)制代碼稱為機(jī)器指令。· 機(jī)器語(yǔ)言:機(jī)器指令的集合就是該計(jì)算機(jī)的機(jī)器語(yǔ)言。2. 符號(hào)語(yǔ)言(符號(hào)匯編語(yǔ)言、匯編語(yǔ)言)· 符號(hào)語(yǔ)言:用一些英文字母和數(shù)字表示一個(gè)指令。· 一般一條符號(hào)語(yǔ)言的指令對(duì)應(yīng)轉(zhuǎn)換為一條機(jī)器指令。· 不同型號(hào)的計(jì)算機(jī)的機(jī)器語(yǔ)言和匯編語(yǔ)言是互不通用的。· 機(jī)器語(yǔ)言和符號(hào)語(yǔ)言稱為計(jì)算機(jī)低級(jí)語(yǔ)言。3. 高級(jí)語(yǔ)言· 高

2、級(jí)語(yǔ)言:以人類日常語(yǔ)言為基礎(chǔ)的一種編程語(yǔ)言。· 高級(jí)語(yǔ)言的語(yǔ)言功能很強(qiáng)。· 高級(jí)語(yǔ)言的一個(gè)語(yǔ)句往往對(duì)應(yīng)多條機(jī)器指令。· 高級(jí)語(yǔ)言寫出的程序?qū)θ魏涡吞?hào)的計(jì)算機(jī)都適用。· 通用語(yǔ)言:fortran;basic;c數(shù)據(jù)庫(kù)語(yǔ)言:foxbase;FoxPro網(wǎng)頁(yè)制作語(yǔ)言:HTML;Java(三) C語(yǔ)言特點(diǎn)1. 語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。C語(yǔ)言一共只有37個(gè)關(guān)鍵字、9種控制語(yǔ)句。· C語(yǔ)言中的37個(gè)關(guān)鍵字auto、break、case、char、const、continue、default、do、double、else、enum、extern、fl

3、oat、for、goto、if、inline、int、long、register、restrict、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while、_bool、_Complex、_Imaginary關(guān)鍵字分類關(guān)鍵字功能數(shù)據(jù)類型關(guān)鍵字(12)char聲明字符型變量或函數(shù)double聲明雙精度變量或函數(shù)enum聲明枚舉類型float聲明浮點(diǎn)型變量或函數(shù)int聲明整型變量或函數(shù)long聲明長(zhǎng)整型變量或函數(shù)short聲明短整型變量或函數(shù)signed聲明有符號(hào)類型變量或函

4、數(shù)struct聲明結(jié)構(gòu)體變量或函數(shù)union聲明共用體(聯(lián)合)數(shù)據(jù)類型unsigned聲明無(wú)符號(hào)類型變量或函數(shù)void聲明函數(shù)無(wú)返回值或無(wú)參數(shù),聲明無(wú)類型指針控制語(yǔ)句關(guān)鍵字(12)循環(huán)語(yǔ)句fordo循環(huán)語(yǔ)句的循環(huán)體while循環(huán)語(yǔ)句的循環(huán)條件break跳出當(dāng)前循環(huán)continue結(jié)束當(dāng)前循環(huán),開(kāi)始下一輪循環(huán)條件語(yǔ)句if條件語(yǔ)句else條件語(yǔ)句否定分支goto無(wú)條件跳轉(zhuǎn)語(yǔ)句開(kāi)關(guān)語(yǔ)句switch用于開(kāi)關(guān)語(yǔ)句case開(kāi)關(guān)語(yǔ)句分支default開(kāi)關(guān)語(yǔ)句中“其他”分支返回語(yǔ)句return子程序返回語(yǔ)句儲(chǔ)蓄類型關(guān)鍵字(4)auto聲明自動(dòng)變量extern聲明變量是在其他文件正聲明register聲明寄存器

5、變量static聲明靜態(tài)變量其他關(guān)鍵字(4)const聲明只讀變量sizeof計(jì)算數(shù)據(jù)類型長(zhǎng)度typedef用已給數(shù)據(jù)類型取別名volatile說(shuō)明變量在程序執(zhí)行中可被隱含地改變C99新增(5)inline用來(lái)定義一個(gè)類的內(nèi)聯(lián)函數(shù)restrict用于限定指針_Bool表示布爾值_Complex and _Imaginary定義的復(fù)數(shù)類型· 9種控制語(yǔ)句goto語(yǔ)句(轉(zhuǎn)向語(yǔ)句)、if語(yǔ)句(條件語(yǔ)句)、while語(yǔ)句(循環(huán)語(yǔ)句)、do-while語(yǔ)句(循環(huán)語(yǔ)句)、for語(yǔ)句(循環(huán)語(yǔ)句)、break語(yǔ)句(中止執(zhí)行switch語(yǔ)句或循環(huán)語(yǔ)句)、continue語(yǔ)句(結(jié)束本次循環(huán)語(yǔ)句)、swi

6、tch語(yǔ)句(多分支選擇語(yǔ)句)、return語(yǔ)句(從函數(shù)返回語(yǔ)句)2. 運(yùn)算符豐富。C語(yǔ)言共有34種運(yùn)算符3. 數(shù)據(jù)類型豐富。4. 具有結(jié)構(gòu)化的控制語(yǔ)句。5. 語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。6. C語(yǔ)言允許直接訪問(wèn)物理地址,能進(jìn)行位(bit)操作,能實(shí)現(xiàn)匯編語(yǔ)言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。7. 用C語(yǔ)言編寫的程序可移植性好。8. 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。(四) C語(yǔ)言程序的結(jié)構(gòu)1. 一個(gè)程序由一個(gè)或多個(gè)源程序文件組成。· 在一個(gè)源程序文件中可以包括3個(gè)部分:a) 預(yù)處理指令。如#include<stdio.h>指令是將stdio.h頭文件的內(nèi)容讀

7、進(jìn)來(lái),放在#include指令行。(stdio是standard input & output的縮寫,h是header的縮寫)b) 全局聲明。即在函數(shù)之外進(jìn)行的數(shù)據(jù)聲明。·在函數(shù)外面聲明的變量稱為全局變量。在函數(shù)中聲明的變量是局部變量,只在函數(shù)范圍內(nèi)有效。c) 函數(shù)定義。2. 函數(shù)是C程序的主要組成部分。1) 一個(gè)C程序有且只有一個(gè)main函數(shù)。程序總是從main函數(shù)開(kāi)始執(zhí)行的。不論main函數(shù)在整個(gè)程序中的位置。2) 一個(gè)函數(shù)包括兩個(gè)部分。a) 函數(shù)首部。即函數(shù)的第1行,包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)名、參數(shù)類型。·注:一個(gè)函數(shù)名后面必須跟一對(duì)圓括號(hào)(

8、),括號(hào)內(nèi)寫函數(shù)的參數(shù)名及其類型。如果函數(shù)沒(méi)有參數(shù),可以在括號(hào)中寫void或者是空括號(hào)。b) 函數(shù)體。即函數(shù)首部下面的花括號(hào)內(nèi)的部分。·函數(shù)體一般包括聲明部分(定義在本函數(shù)中所用到的變量+對(duì)本函數(shù)所調(diào)用函數(shù)進(jìn)行聲明)和執(zhí)行部分。3) 程序中對(duì)計(jì)算機(jī)的操作是由函數(shù)中的C語(yǔ)句完成的。4) 在每個(gè)數(shù)據(jù)聲明和語(yǔ)句的最后必須有一個(gè)分號(hào)“;”(且必須是英文輸入狀態(tài)下的分號(hào))5) C語(yǔ)言本身不提供輸入輸出語(yǔ)句。輸入和輸出操作是由C標(biāo)準(zhǔn)函數(shù)庫(kù)中的函數(shù)實(shí)現(xiàn)的。a) 標(biāo)準(zhǔn)輸入輸出函數(shù):putchar(輸出字符)、getchar(輸入字符)、printf(格式輸出)、scanf(格式輸入)、puts(輸出

9、字符串)、gets(輸入字符串)。b) printf函數(shù)i. 一般形式printf(格式控制,輸出表列)ii. 格式控制(轉(zhuǎn)換控制字符串、格式字符串):用雙撇號(hào)括起來(lái)的一個(gè)字符串。iii. 格式控制=格式聲明(% 附加字符 格式字符)+普通字符(原樣輸出地字符)printf函數(shù)中用到的格式字符格式字符說(shuō)明d,i以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號(hào))o以八進(jìn)制無(wú)符號(hào)形式輸出整數(shù)x,X以十六進(jìn)制無(wú)符號(hào)形式輸出整數(shù)u以無(wú)符號(hào)十進(jìn)制形式輸出整數(shù)c以字符形式輸出,只輸出一個(gè)字符s輸出字符串f以小數(shù)形式輸出單、雙精度數(shù),隱含輸出6位小數(shù)e,E以指數(shù)形式輸出實(shí)數(shù)g,G選用%f或%e格式中輸出寬度較短

10、的一種格式,不輸出無(wú)意義的0printf函數(shù)中用到的格式附加字符字符說(shuō)明l用于長(zhǎng)整型整數(shù),可加在格式符d、o、x、u前面m(正整數(shù))數(shù)據(jù)最小寬度n(正整數(shù))對(duì)實(shí)數(shù),表示輸出n位小數(shù);對(duì)字符串,表示截取的字符個(gè)數(shù)-輸出的數(shù)字或字符在域內(nèi)向左靠iv. 如果想輸出字符“%”,則在“格式控制字符串”中用連續(xù)兩個(gè)“%”表示。c) scanf函數(shù)i. 一般形式scanf(格式控制,地址表列)ii. 地址表列是變量地址,不是變量名。記得加“&”取地址。iii. 輸入數(shù)據(jù)時(shí)應(yīng)在對(duì)應(yīng)位置上輸入除了格式聲明以外的其他字符。(一一對(duì)應(yīng),必須對(duì)應(yīng))iv. 輸入數(shù)值時(shí),在兩個(gè)數(shù)值之間需要插入空格(或其他分隔符)

11、;連續(xù)輸入字符是,在兩個(gè)字符之間不要插入空格或其他分隔符。v. 輸入數(shù)值數(shù)據(jù)時(shí),輸入空格、回車、Tab鍵或遇到非法字符(不屬于數(shù)值的字符),認(rèn)為該數(shù)據(jù)結(jié)束。d) putchar函數(shù)(輸出一個(gè)字符)i. 一般形式putchar(c)ii. putchar輸出一個(gè)字符。c可以是字符常量、整型常量、字符變量、整型變量(其值在字符的ASCII代碼范圍內(nèi))。iii. putchar也可以輸出轉(zhuǎn)義字符。e) gerchar( )函數(shù)(輸入一個(gè)字符)i. 一般形式getchar( )ii. gerchar函數(shù)沒(méi)有參數(shù),從計(jì)算機(jī)終端輸入一個(gè)字符。iii. 只能接收一個(gè)字符,想輸入多個(gè)字符要用多個(gè)getchar

12、函數(shù)。f) puts函數(shù)(輸出一個(gè)字符串)i. 一般形式puts(字符數(shù)組)ii. 用puts函數(shù)輸出的字符串中可以包含轉(zhuǎn)義字符。g) gets函數(shù)(輸入一個(gè)字符串)i. 一般形式gets(字符數(shù)組)ii. 向字符數(shù)組輸入一個(gè)字符串。送給數(shù)組的0占一個(gè)字符。3. 程序應(yīng)當(dāng)包含注釋。· C語(yǔ)言允許用兩種注釋方式:1) 以/開(kāi)始的單行注釋。這種注釋的范圍從/開(kāi)始,以換行符結(jié)束。這種注釋不能跨行。注釋內(nèi)容一行寫不下,可以用多個(gè)單行注釋。2) 以 /*開(kāi)始,以*/結(jié)束的塊式注釋。編譯系統(tǒng)在發(fā)現(xiàn)一個(gè)/*后,開(kāi)始找注釋結(jié)束符*/,把二者間的內(nèi)容作為注釋。· 注釋只給人看,計(jì)算機(jī)不執(zhí)行。

13、(在程序進(jìn)行預(yù)編譯處理時(shí)將每個(gè)注釋替換為一個(gè)空格,在編譯時(shí)注釋部分不產(chǎn)生目標(biāo)代碼。)(五) 運(yùn)行C程序源程序目標(biāo)程序可執(zhí)行程序內(nèi)容程序設(shè)計(jì)語(yǔ)言機(jī)器語(yǔ)言機(jī)器語(yǔ)言可執(zhí)行否否是文件名后綴.c.obj.exe二、 算法算法+數(shù)據(jù)結(jié)構(gòu)=程序求解問(wèn)題的步驟分析問(wèn)題算法分析程序設(shè)計(jì)程序調(diào)試運(yùn)行與維護(hù)分類計(jì)算計(jì)算法分為數(shù)值運(yùn)算算法和非數(shù)值運(yùn)算算法。特點(diǎn)1. 有窮性。一個(gè)算法應(yīng)包含有限的操作步驟,不能是無(wú)限的。2. 確定性。算法中的每一個(gè)步驟應(yīng)當(dāng)是確定的,不能含糊不清。3. 有零個(gè)或多個(gè)輸入。4. 有一個(gè)或多個(gè)輸出。沒(méi)有輸出的算法是沒(méi)有意義的。5. 有效性。(比如不能讓0做除數(shù))表示方法1. 自然語(yǔ)言2. 流程

14、圖1) 流程圖符號(hào)起止框輸入輸出框處理框判斷框連接點(diǎn)流程線注釋框2) 三種基本結(jié)構(gòu)· 順序結(jié)構(gòu)· 選擇結(jié)構(gòu)· 循環(huán)結(jié)構(gòu)當(dāng)型(while型)循環(huán)結(jié)構(gòu) 直到型(until型)循環(huán)結(jié)構(gòu)3) N-S流程圖4) 偽代碼·偽代碼是用介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào)來(lái)描述算法。(只要把意思表達(dá)清楚就行)5) 計(jì)算機(jī)語(yǔ)言三、 數(shù)據(jù)類型(一) 常量1. 直接常量1) 整型常量2) 實(shí)型常量(a) 十進(jìn)制小數(shù)形式(b) 指數(shù)形式 (e或E之前必須有數(shù)字,之后必須為整數(shù))3) 字符常量(a) 普通字符。用單撇號(hào)括起來(lái)的一個(gè)字符。如a(b) 轉(zhuǎn)義字符轉(zhuǎn)義字符及

15、其作用轉(zhuǎn)義字符字符值輸出結(jié)果'一個(gè)單撇號(hào)(')具有此八進(jìn)制碼的字符"一個(gè)雙撇號(hào)(")輸出此字符?一個(gè)問(wèn)號(hào)(?)輸出此字符一個(gè)反斜線()輸出此字符a警告(alert)產(chǎn)生聲音或視覺(jué)信號(hào)b退格(backspace)將當(dāng)前位置后退一個(gè)字符f換頁(yè)(form feed)將當(dāng)前位置移到下一頁(yè)的開(kāi)頭n換行將當(dāng)前位置移到下一行的開(kāi)頭r回車(carriage return)將當(dāng)前位置移到本行的開(kāi)頭t水平制表符將當(dāng)前位置移到下一個(gè)tab位置v垂直制表符將當(dāng)前位置移到下一個(gè)垂直制表對(duì)齊點(diǎn)o,oo,oo其中o代表一個(gè)八進(jìn)制數(shù)字與該八進(jìn)制碼對(duì)應(yīng)的ASCII字符與該八進(jìn)制碼對(duì)應(yīng)的字符x

16、hh其中h代表一個(gè)十六進(jìn)制數(shù)字與該十六進(jìn)制碼對(duì)應(yīng)的ASCII字符與該十六進(jìn)制碼對(duì)應(yīng)的字符4) 字符串常量。用雙撇號(hào)把若干個(gè)字符括起來(lái),字符串常量是雙撇號(hào)中的全部字符(不包括雙撇號(hào)本身)。如:”boy”2. 符號(hào)常量。用#define指令,指定用一個(gè)符號(hào)名稱代表一個(gè)常量。如:#definePI3.1416/注意行末沒(méi)有分號(hào)好處: “見(jiàn)名知意”“一改全改”· 符號(hào)常量在程序中不能重新賦值。· 注:區(qū)分符號(hào)常量和變量。符號(hào)常量不占內(nèi)存,只是一個(gè)臨時(shí)符號(hào),在預(yù)編譯后這個(gè)符號(hào)就不存在了,不能對(duì)符號(hào)常量賦新值。(二) 變量1. 定義:在程序運(yùn)行過(guò)程中,其值可以改變的量稱為變量。變量代表

17、一個(gè)有名字、具有特定屬性的一個(gè)儲(chǔ)存單元。2. 2個(gè)要素變量名:以一個(gè)名字代表的一個(gè)儲(chǔ)存地址。變量值:變量值儲(chǔ)存在內(nèi)存中。3. 變量必須先定義、后使用。(三) 常變量如:const int a=3表示a被定義為一個(gè)整型變量,指定其值為3,而且在變量存在期間其值不能改變。1. 常變量具有變量的基本屬性:有類型,占儲(chǔ)存單元,便于在程序中被引用。2. 常變量與常量的區(qū)別常變量是有名字的不變量,常量是沒(méi)有名字的不變量。(四) 標(biāo)識(shí)符1. 定義:在計(jì)算機(jī)高級(jí)語(yǔ)言中,用來(lái)對(duì)變量、符號(hào)常量名、函數(shù)、數(shù)組、類型等命名的有效字符序列統(tǒng)稱為標(biāo)識(shí)符。2. 規(guī)定:標(biāo)識(shí)符只能由字母、數(shù)字和下劃線3中字符組成。(五) 數(shù)據(jù)

18、類型1. 定義:類型是對(duì)數(shù)據(jù)分配儲(chǔ)存單元的安排,包括儲(chǔ)存單元的長(zhǎng)度和數(shù)據(jù)的儲(chǔ)存形式。2.3. 整型數(shù)據(jù)1) 基本整型、短整型、長(zhǎng)整型、雙長(zhǎng)整型,變量值在儲(chǔ)存單元中以補(bǔ)碼形式儲(chǔ)存,儲(chǔ)存單元中的第1個(gè)二進(jìn)位制代表符號(hào)。整型數(shù)據(jù)常見(jiàn)的儲(chǔ)存空間和值的范圍類型字節(jié)數(shù)取值范圍int(基本整型)2-32768327674-231(231-1)unsigned int(無(wú)符號(hào)基本整型)20(216-1)40(232-1)short(短整型)2-215(215-1)unsigned short(無(wú)符號(hào)短整型)20(216-1)long(長(zhǎng)整型)4-231(231-1)unsigned long(無(wú)符號(hào)長(zhǎng)整型)4

19、0(232-1)long long(雙長(zhǎng)整型)8-263(263-1)unsigned long long(無(wú)符號(hào)雙長(zhǎng)整型)60(264-1)4. 字符型數(shù)據(jù)1) 字符是按其代碼(整數(shù))形式儲(chǔ)存的。指定用1個(gè)字節(jié)(8位)儲(chǔ)存一個(gè)字符。2) 大寫英文字母A065小寫英文字母a097數(shù)字00483) 一個(gè)字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出。字符型數(shù)據(jù)常見(jiàn)的儲(chǔ)存空間和值的范圍類型字節(jié)數(shù)取值范圍signed char(有符號(hào)字符型)1-128127unsigned char(無(wú)符號(hào)字符型)102555. 浮點(diǎn)型數(shù)據(jù)1) 浮點(diǎn)型數(shù)據(jù)用來(lái)表示具有小數(shù)點(diǎn)的實(shí)數(shù)。浮點(diǎn)數(shù):實(shí)數(shù)的指數(shù)形式。規(guī)范化

20、的指數(shù)形式:小數(shù)部分中小數(shù)點(diǎn)前的數(shù)字為0、小數(shù)點(diǎn)后第1位數(shù)字不為0的指數(shù)表示形式。浮點(diǎn)型數(shù)據(jù)常見(jiàn)的儲(chǔ)存空間和值的范圍類型字節(jié)數(shù)有效數(shù)字?jǐn)?shù)值范圍float(單精度浮點(diǎn)型)46-3.4*1038-1.2*10(-38)、0、1.2*10(-38)3.4*1038double(雙精度浮點(diǎn)型)815-1.7*10308-2.7*10(-308)、0、2.7*10(-308)1.7*10308long double(長(zhǎng)雙精度)815-1.7*10308-2.7*10(-308)、0、2.7*10(-308)1.7*103081619-1.1*104932-3.4*10(-4932)、0、3.4*10(-

21、4932)1.1*104932四、 運(yùn)算符運(yùn)算符和結(jié)合性優(yōu)先級(jí)運(yùn)算符含義要求運(yùn)算對(duì)象的個(gè)數(shù)結(jié)合方向1()圓括號(hào)自左至右下標(biāo)運(yùn)算符->指向結(jié)構(gòu)體成員運(yùn)算符.結(jié)構(gòu)體成員運(yùn)算符2!邏輯非運(yùn)算符1(單目運(yùn)算符)自右至左按位取反運(yùn)算符+自增運(yùn)算符-自減運(yùn)算符-負(fù)號(hào)運(yùn)算符(類型)類型轉(zhuǎn)換運(yùn)算符*指針運(yùn)算符&取地址運(yùn)算符sizeof長(zhǎng)度運(yùn)算符3*乘法運(yùn)算符2(雙目運(yùn)算符)自左至右/除法運(yùn)算符%求余運(yùn)算符4+加法運(yùn)算符2(雙目運(yùn)算符)自左至右-減法運(yùn)算符5<<左移運(yùn)算符2(雙目運(yùn)算符)自左至右>>右移運(yùn)算符6<小于運(yùn)算符2(雙目運(yùn)算符)自左至右<=小于等于運(yùn)算

22、符>大于運(yùn)算符>=大于等于運(yùn)算符7=等于運(yùn)算符2(雙目運(yùn)算符)自左至右!=不等于運(yùn)算符8&按位與運(yùn)算符2(雙目運(yùn)算符)自左至右9按位異或運(yùn)算符2(雙目運(yùn)算符)自左至右10|按位或運(yùn)算符2(雙目運(yùn)算符)自左至右11&&邏輯與運(yùn)算符2(雙目運(yùn)算符)自左至右12|邏輯或運(yùn)算符2(雙目運(yùn)算符)自左至右13?:條件運(yùn)算符3(三目運(yùn)算符)自右至左14=賦值運(yùn)算符2(雙目運(yùn)算符)自右至左+=加后賦值運(yùn)算符-=減后賦值運(yùn)算符*=乘后賦值運(yùn)算符/=除后賦值運(yùn)算符%=取余后賦值運(yùn)算符>>=右移后賦值運(yùn)算符<<=左移后賦值運(yùn)算符&=按位與后賦值運(yùn)算

23、符=按位異或后賦值運(yùn)算符|=按位或后賦值運(yùn)算符15,逗號(hào)運(yùn)算符(順序求值運(yùn)算符)自左至右(一) ·兩個(gè)整數(shù)相除的結(jié)果為整數(shù),舍去小數(shù)部分。 兩個(gè)實(shí)數(shù)相除的結(jié)果是雙精度實(shí)數(shù)。·除數(shù)或被除數(shù)中有一個(gè)為負(fù)值,舍入的方向不固定。C編譯系統(tǒng)采取“向零取整”。· %運(yùn)算要求參加運(yùn)算的對(duì)象為整數(shù),結(jié)果也是整數(shù)。(二) 自增運(yùn)算符+i(在使用i之前,先使i的值加1)-i(在使用i之前,先使i的值減1)i+(在使用i之后,使i的值加1)i-(在使用i之后,使i的值減1)· 注:自增自減運(yùn)算符只能用于變量,不能用于常量或表達(dá)式。(三) 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符1. 一般形式(類型

24、名)(表達(dá)式)2. 表達(dá)式應(yīng)用括號(hào)括起來(lái)(int)(x+y)(將x+y的值轉(zhuǎn)換成int型)(int)x+y(將x的值轉(zhuǎn)換成int型,然后與y相加)3. 強(qiáng)制類型轉(zhuǎn)換得到的是臨時(shí)數(shù)據(jù),原來(lái)變量的類型未發(fā)生變化。(四) 邏輯運(yùn)算符邏輯運(yùn)算的真值表ab!a!ba&&ba|bTRUE TRUE FALSEFALSETRUE TRUE TRUE FALSEFALSETRUE FALSETRUE FALSETRUETRUE FALSEFALSETRUE FALSEFALSETRUE TRUE FALSEFALSE1. 優(yōu)先次序高低!(非)算術(shù)運(yùn)算符關(guān)系運(yùn)算符&&和|賦值運(yùn)算

25、符記憶:!(非) (+、-、- )(* / %)(+ -)(< <= > >=)(= !=) (&& |)(=)五、 表達(dá)式(一) 算術(shù)表達(dá)式(二) 賦值表達(dá)式1. 一般形式變量賦值運(yùn)算符表達(dá)式2. 不能給算術(shù)表達(dá)式或常量賦值。3. 表達(dá)式具有計(jì)算和賦值的雙重功能。4. 表達(dá)式也有值。如:賦值表達(dá)式a=3*5,表達(dá)式的值和變量a的值都是15。5. 可以在定義變量時(shí)對(duì)變量賦以初值。如:int a=3,b=3,c=3;但不能寫int a=b=c=3;(三) 關(guān)系表達(dá)式1. 關(guān)系表達(dá)式:用關(guān)系運(yùn)算符將兩個(gè)數(shù)值表達(dá)式連接起來(lái)的式子。2. 關(guān)系表達(dá)式的值:關(guān)系表達(dá)

26、式的值是一個(gè)邏輯值,即“真”或“假”。“真”表達(dá)式的值為1,“假”表達(dá)式的值為0.3. 特別注意:判斷必須一步一步來(lái)。關(guān)系運(yùn)算符是自左至右的結(jié)合方向。· a<b<c先判斷“a<b”得值為1或0,再用“1或0<c”得值為1或0。(四) 邏輯表達(dá)式1. 判斷一個(gè)“量”的真假:非0代表“真”,0代表“假”;判斷一個(gè)邏輯表達(dá)式的真假:1代表“真”,0代表“假”。邏輯運(yùn)算的真值表ab!a!ba&&ba|b非0非00011非0001010非010010011002. 邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出

27、表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。a) a&&b&&c。如果a為假,就不必判別b和c,此時(shí)整個(gè)表達(dá)式已經(jīng)為假。如果a為真,b為假,不判別c。b) a|b|c。只要a為真,就不必判別b和c。a為假,才判別b。a和b都為假才判別c。3. 量、關(guān)系表達(dá)式、邏輯表達(dá)式都有真假,可以作為if語(yǔ)句中的表達(dá)式。(五) 條件表達(dá)式1. 一般形式表達(dá)式1? 表達(dá)式2: 表達(dá)式3執(zhí)行順序(六) 逗號(hào)表達(dá)式1. 一般形式(表達(dá)式1,表達(dá)式2,表達(dá)式m)2. 在逗號(hào)表達(dá)式內(nèi)按自左至右順序求解,整個(gè)逗號(hào)表達(dá)式的值為最后邊的表達(dá)式的值。六、 語(yǔ)句(一)(二) 實(shí)現(xiàn)順序結(jié)構(gòu)的語(yǔ)句1. 賦值語(yǔ)句1

28、) 定義:由賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成。2) 一般形式變量名=表達(dá)式;2. 函數(shù)調(diào)用語(yǔ)句1) 一般形式函數(shù)名(參數(shù)表列);2) 分類:標(biāo)準(zhǔn)庫(kù)函數(shù),用戶定義函數(shù)。3. 復(fù)合語(yǔ)句1) 定義:由一組語(yǔ)句組成,并放在一對(duì)花括號(hào)“”中間。2) 一般形式說(shuō)明部分;執(zhí)行部分;3) 復(fù)合語(yǔ)句是一個(gè)整體,在語(yǔ)法結(jié)構(gòu)上與一個(gè)單一語(yǔ)句相同。4) 在復(fù)合語(yǔ)句中的“內(nèi)部數(shù)據(jù)描述語(yǔ)句”中定義的變量是局部變量,僅在復(fù)合語(yǔ)句中有效。5) 復(fù)合語(yǔ)句結(jié)束的“ ”之后,不需要分號(hào)。(三) 實(shí)現(xiàn)選擇結(jié)構(gòu)的語(yǔ)句1. if語(yǔ)句1) 一般形式if(表達(dá)式)語(yǔ)句1else語(yǔ)句2) 變形形式a) if(表達(dá)式)語(yǔ)句1b) if(表達(dá)式)語(yǔ)句1

29、else語(yǔ)句2c) if(表達(dá)式1)語(yǔ)句1else if(表達(dá)式2)語(yǔ)句2else if(表達(dá)式m)語(yǔ)句melse語(yǔ)句m+13) if和else后面沒(méi)有分號(hào)“;”,語(yǔ)句后邊必須有分號(hào)“;”4) 復(fù)合語(yǔ)句要用花括號(hào)括起來(lái)。5) if語(yǔ)句的嵌套if( )if( )語(yǔ)句1else語(yǔ)句2elseif( )語(yǔ)句3else語(yǔ)句4· else總是與它上面的最近的未配對(duì)的if配對(duì)2. switch語(yǔ)句(多分支選擇語(yǔ)句)1) 一般形式switch(表達(dá)式)case常量1:語(yǔ)句1case常量2:語(yǔ)句2case常量n:語(yǔ)句ndefault:語(yǔ)句n+12) switch后面括號(hào)內(nèi)的“表達(dá)式”,其值的類型為整

30、數(shù)類型(包括字符型)。3) 每一個(gè)case常量必須互不相同。4) 一般情況下,在執(zhí)行一個(gè)case子句后,應(yīng)當(dāng)用break語(yǔ)句使流程跳出switch結(jié)構(gòu)。否則會(huì)不加判斷,從執(zhí)行完的case標(biāo)號(hào)后面依次執(zhí)行下面語(yǔ)句。5) 多個(gè)case標(biāo)號(hào)可以共用一組執(zhí)行語(yǔ)句。如:case常量1:case常量2:case常量3:語(yǔ)句3(四) 實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語(yǔ)句1. while語(yǔ)句1) 一般形式while(表達(dá)式)語(yǔ)句2) 只要循環(huán)條件表達(dá)式為真,就執(zhí)行循環(huán)體語(yǔ)句。先判斷條件表達(dá)式,后執(zhí)行循環(huán)體語(yǔ)句。3) 循環(huán)體中一般有改變循環(huán)變量的語(yǔ)句,不可以寫死循環(huán),記得賦初值。2. dowhile語(yǔ)句1) 一般形式do語(yǔ)句wh

31、ile(表達(dá)式);2) 先無(wú)條件執(zhí)行循環(huán)體,再判斷循環(huán)條件是否成立。表達(dá)式為真,執(zhí)行循環(huán)體語(yǔ)句;表達(dá)式為假,循環(huán)結(jié)束。特別注意和until循環(huán)結(jié)構(gòu)不同,until型是表達(dá)式為假,執(zhí)行循環(huán)體語(yǔ)句,表達(dá)式為真,循環(huán)結(jié)束。3) while語(yǔ)句和dowhile語(yǔ)句在while表達(dá)式一開(kāi)始就為假時(shí),兩種循環(huán)的結(jié)果不同。4) dowhile后面加分號(hào);if for while后面不加。3. for語(yǔ)句1) 一般形式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句即for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)語(yǔ)句執(zhí)行順序2) 表達(dá)式1、2、3都可以省略,但省略后表達(dá)式之間的分號(hào)“;”不能省略。·表達(dá)

32、式1可以省略,即不設(shè)置初值。表達(dá)式1省略應(yīng)在for語(yǔ)句之前賦初值。· 表達(dá)式2 可以省略,即不判斷循環(huán)條件,循環(huán)無(wú)終止進(jìn)行。· 表達(dá)式3可以省略,但應(yīng)保證循環(huán)能正常結(jié)束。3) 表達(dá)式1、2、3可以是逗號(hào)表達(dá)式。4) 所有定義的變量的有效范圍只限于for循環(huán)中。4. 終止循環(huán)1) 用break語(yǔ)句提前終止循環(huán)· break語(yǔ)句只能用于循環(huán)語(yǔ)句和switch語(yǔ)句中,不能單獨(dú)使用。· 循環(huán)的嵌套中,一個(gè)break只能終止一個(gè)內(nèi)循環(huán)2) 用continue語(yǔ)句提前結(jié)束本次循環(huán)七、 數(shù)組(一) 數(shù)組是一組有序數(shù)據(jù)的集合。數(shù)組中的每一個(gè)元素都屬于同一個(gè)數(shù)據(jù)類型。(二

33、) 定義數(shù)組1. 定義一維數(shù)組1) 一般形式類型符數(shù)組名常量表達(dá)式2) 定義數(shù)組時(shí),方括號(hào)中的常量表達(dá)式表示元素的個(gè)數(shù),即數(shù)組長(zhǎng)度。它可以是常量和符號(hào)常量,不能包含變量。注意:下標(biāo)是從0開(kāi)始的。定義a10數(shù)組不存在數(shù)組元素a10。2. 定義二維數(shù)組1) 一般形式類型說(shuō)明符數(shù)組名常量表達(dá)式常量表達(dá)式2) 二維數(shù)組中元素排列的順序是按行存放的3. 定義字符數(shù)組一般形式char數(shù)組名常量表達(dá)式(三) 引用數(shù)組1. 引用一維數(shù)組的元素1) 表示形式數(shù)組名下標(biāo)注意:只能引用數(shù)組元素二不能一次整體調(diào)用整個(gè)數(shù)組全部元素的值。2) 下標(biāo)可以是整型常量或整形表達(dá)式。2. 引用二維數(shù)組的元素1) 表示形式數(shù)組名下

34、標(biāo)下標(biāo)2) 引用數(shù)組元素時(shí),下標(biāo)值應(yīng)在已定義的數(shù)組大小的范圍內(nèi)。注意行列的下標(biāo)都從0開(kāi)始。3. 引用字符數(shù)組的元素(四) 初始化數(shù)組1. 一維數(shù)組的初始化(“初始化列表”方法)1) 在定義數(shù)組時(shí)對(duì)全部數(shù)組元素賦予初值。2) 給數(shù)組中的一部分元素賦值,系統(tǒng)自動(dòng)給之后的元素賦初值為0(字符型數(shù)組初始化為0,指針型數(shù)組初始化為NULL).3) 對(duì)全部數(shù)組元素賦初值,可以不指定數(shù)組長(zhǎng)度。2. 二維數(shù)組的初始化1) 分行給二維數(shù)組賦初值。(每行數(shù)據(jù)用一個(gè)花括號(hào)括起來(lái))2) 按數(shù)組元素在內(nèi)存中的排列順序?qū)€(gè)元素賦初值。3) 對(duì)部分元素賦初值。其余元素值自動(dòng)為0。4) 對(duì)全部元素賦初值,則可以省略行的長(zhǎng)度,

35、但不能省略列的長(zhǎng)度。3. 字符數(shù)組的初始化1) 逐個(gè)元素初始化若提供的初值個(gè)數(shù)與預(yù)定的數(shù)組長(zhǎng)度相同,定義時(shí)可以省略數(shù)組長(zhǎng)度。若提供的初值個(gè)數(shù)大于數(shù)組長(zhǎng)度,則出現(xiàn)語(yǔ)法錯(cuò)誤。若提供的初值個(gè)數(shù)小于數(shù)組長(zhǎng)度,其余的元素自動(dòng)為空字符(0)2) 字符串初始化(五) 字符數(shù)組的輸入輸出1. 字符數(shù)組存儲(chǔ)字符串常量時(shí)會(huì)自動(dòng)加一個(gè)0作為結(jié)束符。(此時(shí)數(shù)組長(zhǎng)度是看到的字符串長(zhǎng)度+1,增加的存放字符0其ASCII值為0) 2. 字符串的輸入輸出1) 用“%c”格式符,逐個(gè)字符輸入輸出。2) 用“%s”格式符,整個(gè)字符串輸入輸出。scanf(“%s”,c);printf(“%s”,c);² 注意:i. pr

36、intf函數(shù)中的輸出項(xiàng)是字符數(shù)組名,不是數(shù)組元素名。如:printf(“%sn”,c)正確,printf(“%sn”,c0)錯(cuò)誤。ii. 用“%s”格式輸出字符數(shù)組時(shí),遇0結(jié)束輸出,且輸出字符中不包含0。iii. 若數(shù)組中包含一個(gè)以上0,則遇第一個(gè)0時(shí)即結(jié)束輸出。用“%s”格式輸入字符數(shù)組時(shí), scanf函數(shù)中的輸入項(xiàng)是字符數(shù)組名,它是該數(shù)組的起始地址地址,前面不再加地址符“&”。iv. 用函數(shù)scanf輸入多個(gè)字符串,輸入時(shí)應(yīng)以空格鍵或回車鍵作為字符串間的分隔。輸入遇到空格或回車就結(jié)束。3) 使用字符串處理函數(shù)puts函數(shù)、gets函數(shù)(之前介紹過(guò))3. 字符串處理函數(shù)(使用時(shí)在程序

37、頭文件出添加聲明#include<string.h>)1) strcat函數(shù)字符串連接函數(shù)i. 功能:把字符數(shù)組2連到字符數(shù)組1后面。ii. 一般形式strcat(字符數(shù)組1,字符數(shù)組2)iii. 返值:返回字符數(shù)組1的首地址。iv. 注意:·字符數(shù)組1必須足夠大。·連接前,兩字符串均以0結(jié)束;連接后,字符串1后面的0取消,只在新字符串最后保留0。2) strcpy函數(shù)字符串復(fù)制函數(shù)i. 功能:將字符串2復(fù)制到字符數(shù)組1中。ii. 一般形式strcpy(字符數(shù)組1,字符串2)iii. 返值:返回字符數(shù)組1的首地址。iv. 注意:·字符數(shù)組1必須足夠大。

38、·字符數(shù)組1必須寫成字符數(shù)組名,字符串2可以是字符數(shù)組名或字符串常量。· 拷貝時(shí)0一同拷貝。· 不能使用賦值語(yǔ)句為一個(gè)字符數(shù)組賦值,只能用strcpy函數(shù)。3) strncpy函數(shù)字符串復(fù)制函數(shù)i. 功能:將字符串2中前面n個(gè)字符復(fù)制到字符數(shù)組1中。ii. 一般形式strncpy(字符數(shù)組1,字符串2,n)iii. n不應(yīng)多于字符數(shù)組1中原有的字符(不包括0)。4) strcmp函數(shù)字符串比較函數(shù)i. 功能:比較字符串1和字符串2。ii. 比較規(guī)則:將兩個(gè)字符串自左至右逐個(gè)字符相比(按ASCII碼值大小比較),直到出現(xiàn)不同的字符或遇到0為止。·如果全部字

39、符相同,則認(rèn)為兩個(gè)字符串相等。·若出現(xiàn)不相同的字符,則以第1對(duì)不相同的字符的比較結(jié)果為準(zhǔn)。iii. 返值:·字符串1=字符串2,則函數(shù)值為0;·字符串1>字符串2,則函數(shù)值為一個(gè)正整數(shù);·字符串1<字符串2,則函數(shù)值為一個(gè)負(fù)整數(shù)。5) srelen函數(shù)測(cè)字符串長(zhǎng)度的函數(shù)i. 功能:測(cè)試字符串長(zhǎng)度。ii. 一般形式strlen(字符數(shù)組)iii. 返值:字符串中的實(shí)際長(zhǎng)度(不包括0)。6) strlwr函數(shù)轉(zhuǎn)換為小寫的函數(shù)i. 功能:將字符串中大寫字母換成小寫字母。ii. 一般形式strlwr(字符串)7) strupr函數(shù)轉(zhuǎn)換為大寫的函數(shù)i.

40、 功能:將字符串中小寫字母換成大寫字母。ii. 一般形式strupr(字符串)八、 函數(shù)(一) 概述1. C語(yǔ)言用函數(shù)實(shí)現(xiàn)程序模塊化。2. 一個(gè)源程序文件由一個(gè)或多個(gè)函數(shù)組成;一個(gè)程序由一個(gè)或多個(gè)源程序文件組成。3. 函數(shù)就是功能。每一個(gè)函數(shù)用來(lái)實(shí)現(xiàn)一個(gè)特定的功能。4. C程序的執(zhí)行從main函數(shù)開(kāi)始,并回到main函數(shù)結(jié)束。5. 函數(shù)之間可以相互調(diào)用,或調(diào)用自身。不能調(diào)用main函數(shù)。6. 函數(shù)之間相互獨(dú)立,不存在從屬關(guān)系。(二) 分類(三) 函數(shù)的定義1. 定義無(wú)參函數(shù)1) 一般形式函數(shù)類型函數(shù)名(void)函數(shù)體(聲明部分+語(yǔ)句部分)2) 函數(shù)類型指函數(shù)返回值的類型。若無(wú)返回值,則定義返

41、回類型為void。若省略此項(xiàng),則認(rèn)為返回類型是int。void表示”空”,沒(méi)有函數(shù)值??梢允÷浴?. 定義有參函數(shù)1) 一般形式函數(shù)類型函數(shù)名(形式參數(shù)表列)函數(shù)體(聲明部分+語(yǔ)句部分)2) 形式參數(shù)定義格式:類型形參名,類型形參名,3. 定義空函數(shù)1) 一般形式函數(shù)類型函數(shù)名() 例:dummy()/* does nothing & returns nothing */(四) 函數(shù)的調(diào)用1. 一般形式函數(shù)名(實(shí)參表列)2. 數(shù)據(jù)傳遞1) 實(shí)際參數(shù):在主調(diào)函數(shù)中調(diào)用一個(gè)函數(shù)時(shí),函數(shù)名后面括號(hào)中的參數(shù)。形式參數(shù)(虛擬參數(shù)):在定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名稱。2) 單向值傳遞:函數(shù)調(diào)

42、用過(guò)程中,系統(tǒng)把實(shí)參的值傳遞給被調(diào)用函數(shù)的形參。且只能由實(shí)參傳給形參。3) 形參在函數(shù)被調(diào)用前不占內(nèi)存。函數(shù)調(diào)用時(shí)為形參分配內(nèi)存。調(diào)用結(jié)束,內(nèi)存釋放。4) 實(shí)參必須有確定的值??梢允浅A俊⒆兞炕虮磉_(dá)式。形參必須指定類型。形參與實(shí)參類型一致,個(gè)數(shù)相同。若形參與實(shí)參類型不一致,自動(dòng)按照形參類型轉(zhuǎn)換。5) 數(shù)組元素只能作函數(shù)實(shí)參,采用“值傳遞”從實(shí)參傳到形參。數(shù)組名作函數(shù)實(shí)參,向形參(數(shù)組名或指針變量)傳遞的是數(shù)組首元素的地址。形參的值改變,實(shí)參的值也改變。6) return語(yǔ)句(函數(shù)返回語(yǔ)句)i. 功能:結(jié)束函數(shù)調(diào)用;函數(shù)返回語(yǔ)句;帶回函數(shù)返回值。ii. 函數(shù)返回值的類型在定義函數(shù)時(shí)制定。函數(shù)返回

43、值通過(guò)函數(shù)中的return語(yǔ)句獲得。iii. return語(yǔ)句后的表達(dá)式類型,與函數(shù)返回值類型不同時(shí),自動(dòng)按函數(shù)類型轉(zhuǎn)換。函數(shù)類型決定返回值的類型。iv. 函數(shù)需要返回值時(shí),若缺少return語(yǔ)句或return語(yǔ)句未帶返回值,則返回一個(gè)不確定值。 (注意看有沒(méi)有return語(yǔ)句)v. 對(duì)于不帶回值的函數(shù),應(yīng)當(dāng)用定義函數(shù)為”void”函數(shù)。此時(shí)函數(shù)體中不得出現(xiàn)return語(yǔ)句。(五) 調(diào)用函數(shù)的條件1. 被調(diào)用的函數(shù)是已經(jīng)定義的函數(shù)。1) 如果使用庫(kù)函數(shù),應(yīng)在本文件開(kāi)頭用#include指令將調(diào)用有關(guān)庫(kù)函數(shù)的信息包含到本文件中。2) 如果使用用戶自己定義的函數(shù),且被調(diào)函數(shù)的位置在主調(diào)函數(shù)的后面(

44、同一個(gè)文件中),應(yīng)該在主調(diào)函數(shù)中對(duì)被調(diào)用的函數(shù)作聲明。(六) 函數(shù)的聲明1. 一般形式函數(shù)類型函數(shù)名(參數(shù)類型1參數(shù)名1,參數(shù)類型2參數(shù)名2,參數(shù)類型n,參數(shù)名n);函數(shù)類型函數(shù)名(參數(shù)類型1,參數(shù)類型2,參數(shù)類型n)(七) 函數(shù)的嵌套調(diào)用(在調(diào)用一個(gè)函數(shù)的過(guò)程中,又調(diào)用另一個(gè)函數(shù))和遞歸調(diào)用(在調(diào)用一個(gè)函數(shù)的過(guò)程中直接或間接地調(diào)用該函數(shù)本身)(八) 局部變量與全局變量1. 定義:在函數(shù)內(nèi)定義的變量是局部變量,在函數(shù)外定義的變量是全局變量。2. 全局變量作用是增加函數(shù)間數(shù)據(jù)聯(lián)系的渠道。同一文件中的所有函數(shù)都能引用全局變量的值,如果在一個(gè)函數(shù)中改變了全局變量的值,就能影響到其他函數(shù)中全局變量的值

45、。3. 通過(guò)全局變量使函數(shù)調(diào)用能得到一個(gè)以上的值。4. 全局變量可以被局部變量屏蔽。5. 變量的儲(chǔ)存方式九、 指針(一) 指針:一個(gè)變量的地址。指針變量:專門存放變量地址的變量。它的值是某個(gè)內(nèi)存單元的地址。指向:指針變量指向變量。(二) 定義指針變量1. 一般形式類型名*指針變量名2. 定義指針變量必須指定基類型。指向整型數(shù)據(jù)的指針類型表示為”int*” 指向int的指針、int指針(int*),(float*),(char*)是不同類型3. 指針變量前面的*表示該變量類型為指針型變量。(只在定義時(shí))例:int *p;變量名是p。(三) 指針變量的引用1. 給指針變量賦值。如p=&a

46、把a(bǔ)的地址賦給指針變量p,指針變量p的值是變量a的地址,p指向a。2. 引用指針變量指向的變量。如果已執(zhí)行“p=&a;”,即指針變量p指向了整型變量a,則printf(“%d”,*p);其作用是以整數(shù)形式輸出指針變量p所指向的變量的值,即變量a的值。如有以下賦值語(yǔ)句:*p=1;表示將整數(shù)1賦給p當(dāng)前所指向的變量,如果p指向變量a,則相當(dāng)于把1賦給了a,即“a=1;”。3. 引出指針變量的值。如: printf(“%o”,p);作用是以八進(jìn)制數(shù)形式輸出變量p的值,如果p指向了a,就是輸出了a的地址,即&a。4. & 取地址運(yùn)算符 * 指針運(yùn)算符(間接訪問(wèn)運(yùn)算符) 5. 注

47、意1) 指針變量必須先賦值,再使用,只能保存地址。2) 一個(gè)指針變量只能指向同一類型的變量。3) &和*運(yùn)算符互為逆運(yùn)算。若:int a=10,*pt=&a; 則: &a、pt 、 &*pt是等價(jià)的 則: *&a、*pt、a 是等價(jià)的(四) 通過(guò)指針引用數(shù)組1. 數(shù)組元素的指針就是數(shù)組元素的地址。2. 指向數(shù)組元素的指針例:int a10;int *p;p=a;數(shù)組名a不代表整個(gè)數(shù)組,上述“p=a;”的作用是把a(bǔ)數(shù)組的首元素的地址賦給指針變量p,而不是把數(shù)組a各元素的值賦給p;3. 對(duì)應(yīng)關(guān)系1) p+i a+i &ai2) *(p+i) *(a+

48、i) ai3) 指向數(shù)組元素的指針變量也可帶下標(biāo): pi *(p+i) 。 即有*(p+i) *(a+i)ai pi注:數(shù)組名是數(shù)組的首地址,因此 p=&a0 與 p=a 等價(jià)。 指針變量可以實(shí)現(xiàn)使本身的值改變,數(shù)組名不可以。 例: p+正確 a+不正確 要注意指針變量的當(dāng)前值,指針變量可以指到數(shù)組后的內(nèi)存單元。即指針變量的越界問(wèn)題。4. 指針變量的運(yùn)算例:int a10;int *p;p=a;i. p+ (或p+=1) 指向下一個(gè)元素。ii. *p+等價(jià)于*(p+)先得到p指向的變量的值,p再加1。iii. *(p+)與*(+p)作用不同,前者先取*p,后使p加1;后者相反。iv.

49、(*p)+表示p所指向的元素值加1。v. 若p當(dāng)前指向a數(shù)組第i個(gè)元素,則: *(p-)相當(dāng)于ai-,先取p值作"*"運(yùn)算,再使p自減; *(+p)相當(dāng)于a+i,先使p自加,再作"*"運(yùn)算; *(-p)相當(dāng)于a-i,先使p自減,再作"*"運(yùn)算。5. 通過(guò)指針引用多維數(shù)組1) int *p,a10;p=a;一維數(shù)組a的有關(guān)指針表示形式含義a一維數(shù)組名,數(shù)組首元素的地址,指針型常量&ai,a+i,p+i元素ai的地址ai,*(a+i),*(p+i)元素ai的值2) int *p,a34;p=a;二維數(shù)組a的有關(guān)指針表示形式含義a二

50、維數(shù)組名,指向一維數(shù)組a0,即0行首地址a0,*(a+0),*a0行0列元素地址a+i,&aii行首地址ai+j,*(a+i)+j,&aiji行j列元素aij的地址*(ai+j),*(*(a+i)+j),aiji行j列元素aij的值(五) 通過(guò)指針引用字符串1) 字符指針:基類型是char類型的指針,可以指向一個(gè)字符串,即保存字符串首字符的地址2) 字符指針變量與字符數(shù)組的區(qū)別字符指針變量中存放的是地址,決不是將字符串放到字符指針變量中。賦初值的方式:對(duì)數(shù)組可以在變量定義時(shí)整體賦初值,但不能在賦值語(yǔ)句中整體賦值。 指針變量的值是可以改變的,而數(shù)組名所指的地址是固定的。 八、 應(yīng)

51、用舉例(一) 兩個(gè)數(shù)對(duì)換 t=a;a=b;b=t;(二) 數(shù)組的輸入和輸出數(shù)組的輸入和輸出要用循環(huán) int a10,i; for(i=0;i<10;i+) scanf("%d",&ai); for(i=0;i<10;i+) printf("%dt",ai);(三) 逆序輸出數(shù)組元素注意逆序的時(shí)候,終止條件是i>=0; int a10,i; for(i=0;i<10;i+) scanf("%d",&ai); for(i=9;i>=0;i-) printf("%dt",ai

52、); return 0;(四) 數(shù)組處理輸出斐波那契數(shù)列前20項(xiàng) int i,f20=1,1; /對(duì)最前面兩個(gè)元素f0和f1賦初值1 for(i=2;i<20;i+) fi=fi-2+fi-1; /從f2開(kāi)始,每一項(xiàng)是前兩項(xiàng)的和 for(i=0;i<20;i+) printf("%8dt",fi);(五) 11000累加或累乘用累加器 long int s,i; s=0; /累加器s賦初值 for(i=1;i<=1000;i+) s+=i;/累加器當(dāng)前值=累加器原值+循環(huán)變量當(dāng)前值 printf("s=%ldn",s);(六) 求11000中3的倍數(shù)和 long int s=0; int i; for(i=1;i<=1000;i+) if(i%3=0)/判斷i是否為是3的倍數(shù),注意=而非= s+=i; printf("s=%ldn

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論