




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、程序設(shè)計(jì)技術(shù),C語言數(shù)據(jù)描述和C程序設(shè)計(jì)初步 結(jié)構(gòu)化程序設(shè)計(jì)基礎(chǔ)和C語言的控制結(jié)構(gòu) 數(shù)組及其應(yīng)用 函數(shù)與C程序結(jié)構(gòu) 指針與函數(shù) 指針與數(shù)組 字符串及其應(yīng)用 結(jié)構(gòu)體類型和聯(lián)合體類型 C語言的文件處理及其應(yīng)用 位運(yùn)算與枚舉類型,指針與數(shù)組,指針與數(shù)組的關(guān)系 指針數(shù)組與命令行參數(shù) 用指針構(gòu)成動(dòng)態(tài)數(shù)組,指針與數(shù)組的關(guān)系,多級(jí)指針的概念 在程序設(shè)計(jì)語言中,占用連續(xù)空間的數(shù)據(jù)對(duì)象都與其所占存儲(chǔ)區(qū)域的起始地址相關(guān)。 占用連續(xù)空間的數(shù)據(jù)對(duì)象有的表示的是線性的概念、有的表示的是平面的概念或是多維空間的概念。在計(jì)算機(jī)存儲(chǔ)系統(tǒng)中對(duì)應(yīng)的都是線性的連續(xù)空間區(qū)域,現(xiàn)在的問題是如何用表明存儲(chǔ)系統(tǒng)中線性連續(xù)區(qū)域的起始地址表示
2、的到底是幾維空間的起始地址。 使用地址的不同級(jí)別來描述這些表示不同空間數(shù)據(jù)對(duì)象在存儲(chǔ)上的首地址,其中用一級(jí)地址描述線性空間在存儲(chǔ)上的首地址;用二級(jí)地址描述平面空間在存儲(chǔ)上的首地址;地址就是指針,所以一級(jí)地址、二級(jí)地址、多級(jí)地址又分別稱為一級(jí)指針、二級(jí)指針和多級(jí)指針。,指針與數(shù)組的關(guān)系,多級(jí)指針變量的定義 二級(jí)指針變量的定義形式如下: 存儲(chǔ)類別符 數(shù)據(jù)類型符 *指針變量名; 三級(jí)指針變量的定義形式如下: 存儲(chǔ)類別符 數(shù)據(jù)類型符 *指針變量名; 更高級(jí)別的指針變量的定義形式按照上述形式類推,只需增加更多的星號(hào)即可。 int x=100,*y,*z; y=,指針與數(shù)組的關(guān)系,多級(jí)指針變量的引用 例6
3、-1 多級(jí)指針變量的引用示例。,指針與數(shù)組的關(guān)系,一維數(shù)組與指針的關(guān)系 一維數(shù)組元素與指針的關(guān)系 定義合適的指針變量后,可以使用指針變量指向數(shù)組中的任何一個(gè)數(shù)組元素。,指針與數(shù)組的關(guān)系,一維數(shù)組與指針的關(guān)系 指針變量的算術(shù)運(yùn)算 對(duì)于指向數(shù)組的指針變量而言,當(dāng)對(duì)指針變量進(jìn)行加減一個(gè)整型常量以及自增/自減運(yùn)算時(shí),實(shí)質(zhì)上就是將指針變量的指向沿著數(shù)組所占據(jù)的存儲(chǔ)區(qū)域向前和向后移動(dòng)多個(gè)或者是一個(gè)數(shù)組元素的位置。,int a10=0,*p1=a,*p2=a; p1+=3; *p1=100; p2=,0,0,0,0,0,0,0,0,0,0,100,2000,200,1000,指針與數(shù)組的關(guān)系,一維數(shù)組與指針
4、的關(guān)系 指針變量的算術(shù)運(yùn)算 對(duì)于兩個(gè)同類型指針變量相減的操作,也只有在這兩個(gè)指針變量指向同一連續(xù)的存儲(chǔ)區(qū)域時(shí)才有實(shí)際意義。 兩個(gè)指針變量差值的絕對(duì)值表示了兩個(gè)指針之間存在著多少個(gè)它們所能夠指向的數(shù)據(jù)對(duì)象,當(dāng)然也可以由此計(jì)算出兩個(gè)指針之間距離的字節(jié)數(shù)。 int a10=1,2,3,4,5,6,7,8,9,10,*p1=a,*p2=a+5;,2,3,4,5,6,7,8,9,10,1,5個(gè)整型數(shù)據(jù) (20個(gè)字節(jié)),例6-2 隨機(jī)生成一個(gè)數(shù)組的所有元素,并用指針移動(dòng)的方式輸出這些元素值。,指針與數(shù)組的關(guān)系,一維數(shù)組與指針的關(guān)系 一維數(shù)組與指針的關(guān)系 當(dāng)定義指向數(shù)組的指針并使其指向了一個(gè)數(shù)組后,在指針沒
5、有移動(dòng)的情況下(即指針始終指向數(shù)組的0號(hào)元素),對(duì)該數(shù)組某個(gè)元素(如i號(hào)元素)的地址和元素值而言分別有三種等價(jià)的表示形式:,等價(jià)的地址表示形式,等價(jià)的元素表示形式, 注:式中常量表達(dá)式的值就是指針?biāo)枰邕^的元素個(gè)數(shù); 例: int (*ptr)10; 定義了指針變量ptr; 指針ptr的一次移動(dòng)可以移動(dòng)過10個(gè)整型數(shù)據(jù)所占用的連續(xù)存儲(chǔ)區(qū)域;,例6-6 使用指向由若干個(gè)元素組成的一維數(shù)組的指針處理二維數(shù)組。 例6-7 指向若干個(gè)元素組成的一維數(shù)組指針變量作函數(shù)形式參數(shù)(求二維數(shù)組中全部元素之和)。,指針與數(shù)組,指針與數(shù)組的關(guān)系 指針數(shù)組與命令行參數(shù) 用指針構(gòu)成動(dòng)態(tài)數(shù)組,指針數(shù)組與命令行參數(shù),指
6、針數(shù)組 指針數(shù)組的概念 如果有一組指向同一類型數(shù)據(jù)的相關(guān)指針也可以對(duì)它們使用數(shù)組這種數(shù)據(jù)結(jié)構(gòu),每一個(gè)元素都是指針的的數(shù)組稱為指針數(shù)組。 指針數(shù)組定義的一般形式為: 存儲(chǔ)類型 數(shù)據(jù)類型 *數(shù)組名常量表達(dá)式; 指針數(shù)組初始化 存儲(chǔ)類型 數(shù)據(jù)類型 *數(shù)組名常量表達(dá)式= 字串常量1,字串常量2,;,指針數(shù)組與命令行參數(shù),指針數(shù)組 用指針數(shù)組組織若干同類型的數(shù)組 例:int a4,b5,*p2; p0=a; p1=b; 用指針數(shù)組組織若干同類型的變量 例: double x,y,*p12; p10=,例6-8 用一維指針數(shù)組處理二維數(shù)組示例。,指針數(shù)組與命令行參數(shù),指針數(shù)組 例6-9 編制程序解決下述問
7、題:5個(gè)學(xué)生,每人所學(xué)課程門數(shù)不同(成績(jī)存放在一維數(shù)組中,以-1表示結(jié)束),編寫程序輸出他們的各項(xiàng)成績(jī)。,指針數(shù)組與命令行參數(shù),命令行參數(shù) 命令行參數(shù)的概念 為了使程序運(yùn)行時(shí)能從系統(tǒng)接收參數(shù),C語言提供了程序在主函數(shù)中接收從命令行傳遞過來的實(shí)參的能力,這種參數(shù)稱為命令行參數(shù)。為了接收命令行參數(shù),在定義主函數(shù)時(shí)使其帶上形式參數(shù),其一般形式為: void main(int argc,char *argv) 主函數(shù)的形式參數(shù) 整型參數(shù)用于記錄命令行輸入的參數(shù)個(gè)數(shù),習(xí)慣于用標(biāo)識(shí)符argc表示; 指向字符的指針數(shù)組argv參數(shù)用于存放命令行上輸入的各實(shí)參字符串的起始地址,即指針數(shù)組的每一個(gè)元素指向一個(gè)由
8、命令行上傳遞而來的字符串。,指針數(shù)組與命令行參數(shù),命令行參數(shù) 例如,若有C源程序文件為echo.cpp,則編譯連接后的執(zhí)行文件echo.exe,若其源文件中主函數(shù)頭形式為: void main(int argc,char *argv), 執(zhí)行程序時(shí)命令行為: echo file1.txt file2.txt 則參數(shù)傳遞的結(jié)果為:argc=3,例6-10 命令行參數(shù)的獲取示例。,指針數(shù)組與命令行參數(shù),命令行參數(shù) 使用命令行參數(shù)時(shí)的注意點(diǎn) 從命令行上帶入的參數(shù)都是字符串,如果程序在功能上要求被帶入的參數(shù)不是作為字符串使用,則需要在應(yīng)用程序中進(jìn)行合適的轉(zhuǎn)換。 例6-11 編程序?qū)崿F(xiàn)功能:在執(zhí)行程序時(shí)
9、從命令行上帶入兩個(gè)實(shí)型數(shù)據(jù),在程序中求兩個(gè)實(shí)數(shù)之和并輸出。,指針與數(shù)組,指針與數(shù)組的關(guān)系 指針數(shù)組與命令行參數(shù) 用指針構(gòu)成動(dòng)態(tài)數(shù)組,用指針構(gòu)成動(dòng)態(tài)數(shù)組,動(dòng)態(tài)數(shù)組的概念 動(dòng)態(tài)數(shù)組就是可以在程序的運(yùn)行過程中根據(jù)需要?jiǎng)?chuàng)建的數(shù)組數(shù)據(jù)對(duì)象。 在支持C99標(biāo)準(zhǔn)的C程序開發(fā)環(huán)境中,允許程序員根據(jù)在程序運(yùn)行過程中提供的數(shù)組長(zhǎng)度定義數(shù)組,亦即數(shù)組空間的分配在程序的運(yùn)行過程中完成。 在不支持C99標(biāo)準(zhǔn)的C程序開發(fā)環(huán)境中,通過結(jié)合使用C語言的動(dòng)態(tài)存儲(chǔ)分配標(biāo)準(zhǔn)庫函數(shù)和指針變量實(shí)現(xiàn)動(dòng)態(tài)數(shù)組。,用指針構(gòu)成動(dòng)態(tài)數(shù)組,C語言中的存儲(chǔ)分配標(biāo)準(zhǔn)庫函數(shù) 存儲(chǔ)分配標(biāo)準(zhǔn)庫函數(shù)malloc 函數(shù)原型 void *malloc(size_
10、t size); 函數(shù)功能 在主存儲(chǔ)器中分配由size所指定大小的存儲(chǔ)塊,返回所分配存儲(chǔ)塊在存儲(chǔ)器中起始位置(指針)。返回指針類型為void(空類型),在應(yīng)用程序中應(yīng)根據(jù)需要進(jìn)行相應(yīng)的類型轉(zhuǎn)換。如果存儲(chǔ)器中沒有足夠的空間分配,即當(dāng)存儲(chǔ)分配失敗時(shí)返回NULL。,用指針構(gòu)成動(dòng)態(tài)數(shù)組,C語言中的存儲(chǔ)分配標(biāo)準(zhǔn)庫函數(shù) 存儲(chǔ)釋放標(biāo)準(zhǔn)庫函數(shù)free 函數(shù)原型 void free( void *memblock ); 函數(shù)功能 釋放由指針變量memblock指明首地址的由malloc類庫函數(shù)分配的存儲(chǔ)塊,即將該塊歸還操作系統(tǒng)。,用指針構(gòu)成動(dòng)態(tài)數(shù)組,C語言中的存儲(chǔ)分配標(biāo)準(zhǔn)庫函數(shù) 重新分配存儲(chǔ)標(biāo)準(zhǔn)庫函數(shù)reall
11、oc 函數(shù)原型 void *realloc( void *memblock, size_t size ); 函數(shù)功能 將以memblock值為首地址的存儲(chǔ)塊長(zhǎng)度調(diào)整為size所指定的長(zhǎng)度。分配成功時(shí),若返回的新存儲(chǔ)塊首地址與由memblock確定的原首地址相同,則不需要進(jìn)行原塊內(nèi)存放內(nèi)容的拷貝;若返回的新存儲(chǔ)塊的首地址與memblock確定的原首地址不同,則需要將原塊內(nèi)存放內(nèi)容的拷貝新分配的存儲(chǔ)塊中。,用指針構(gòu)成動(dòng)態(tài)數(shù)組,一維動(dòng)態(tài)數(shù)組的建立和使用 實(shí)現(xiàn)一維動(dòng)態(tài)數(shù)組的基本步驟 定義合適數(shù)據(jù)類型的一級(jí)指針變量。 調(diào)用C動(dòng)態(tài)存儲(chǔ)分配標(biāo)準(zhǔn)庫函數(shù)按照指定的長(zhǎng)度和數(shù)據(jù)類型分配存儲(chǔ)。 將動(dòng)態(tài)分配存儲(chǔ)區(qū)域的首地址轉(zhuǎn)換為所需要的指針形式賦值給對(duì)應(yīng)的指針變量。 將指針變量名作為一維數(shù)組名操作。,例6-13 編制程序?qū)崿F(xiàn)冒泡排序功能,程序中假定事先并不知道排序元素的個(gè)數(shù)。為了模擬數(shù)據(jù)程序中仍然要求被排序數(shù)組用隨機(jī)函數(shù)生成。,用指針構(gòu)成動(dòng)態(tài)數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)防中暑主題班會(huì)課件
- 預(yù)制廠安全教育課件
- 大學(xué)誠(chéng)信文明主題教育
- 公務(wù)接待培訓(xùn)
- 項(xiàng)痹中醫(yī)診療課件
- 鋼筆畫技能培訓(xùn)課件視頻
- 健康飲食產(chǎn)業(yè)園項(xiàng)目環(huán)境影響報(bào)告書
- 2025年核設(shè)施退役技術(shù)設(shè)備項(xiàng)目建議書
- xx片區(qū)城鄉(xiāng)供水一體化項(xiàng)目投資計(jì)劃書(模板范文)
- 2025年工業(yè)爐窯的新型燃燒裝置項(xiàng)目建議書
- 病區(qū)醫(yī)院感染管理質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn)(2024年)
- 2025至2030全球及中國(guó)廚房顯示系統(tǒng)(KDS)行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 2025年北京市高考語文試卷(含答案)
- 2025年高考湖北卷物理真題(解析版)
- 中國(guó)隱身材料行業(yè)發(fā)展分析及發(fā)展前景與投資研究報(bào)告2025-2028版
- 2025年浙江省中考數(shù)學(xué)試卷真題(含官方標(biāo)準(zhǔn)答案及解析)
- 譯林版(2024)七年級(jí)下冊(cè)英語期末復(fù)習(xí)綜合練習(xí)試卷(含答案)
- 汽車構(gòu)造試題及答案
- 2025至2030中國(guó)摩擦材料及制動(dòng)產(chǎn)品行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展報(bào)告
- 11人制足球競(jìng)賽規(guī)則
- 放射職業(yè)衛(wèi)生培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論