C語(yǔ)言實(shí)驗(yàn)報(bào)告范文.doc
《C語(yǔ)言實(shí)驗(yàn)報(bào)告范文.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語(yǔ)言實(shí)驗(yàn)報(bào)告范文.doc(4頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
計(jì)算機(jī)科學(xué)與技術(shù)系C語(yǔ)言實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)名稱:指針及其應(yīng)用 日期: 得分: 指導(dǎo)老師: 專業(yè): 班次: 姓名: 學(xué)號(hào): 實(shí)驗(yàn)?zāi)康? (1) 掌握變量的指針及其基本用法。 (2) 掌握一維數(shù)組的指針及其基本用法。 (3) 掌握指針變量作為函數(shù)的參數(shù)時(shí),參數(shù)的傳遞過(guò)程及其用法。 一. 實(shí)驗(yàn)內(nèi)容 (1) 運(yùn)行以下程序,并從中了解變量的指針和指針變量的概念。 (2) 運(yùn)行以下程序,觀察&a[0]、&a[i]和p的變化,然后回答以下問(wèn)題: 1. 程序的功能是什么? 2. 在開(kāi)始進(jìn)入循環(huán)體之前,p指向誰(shuí)? 3. 循環(huán)每增加一次,p的值(地址)增加多少?它指向誰(shuí)? 4. 退出循環(huán)后,p指向誰(shuí)? 5. 你是否初步掌握了通過(guò)指針變量引用數(shù)組元素的方法? (3) 先分析以下程序的運(yùn)行結(jié)果,然后上機(jī)驗(yàn)證,并通過(guò)此例掌握通過(guò)指針變量引用數(shù)組元素的各種方法。 (4) 編寫(xiě)函數(shù),將n個(gè)數(shù)按原來(lái)的順序的逆序排列(要求用指針實(shí)現(xiàn)),然后編寫(xiě)主函數(shù)完成: ① 輸入10個(gè)數(shù); ② 調(diào)用此函數(shù)進(jìn)行重排; ③ 輸出重排后的結(jié)果。 二. 分析與討論 (1) 指針的定義方法,指針和變量的關(guān)系。 定義方法: 數(shù)據(jù)類型 *指針變量名; 如定義一個(gè)指向int型變量的指針—— int *p; 則我們可以繼續(xù)寫(xiě)如下代碼—— int a = 4; p = &a; printf("%d", *p); 在這里,我們定義了一個(gè)變量a,我們把它理解為內(nèi)存空間連續(xù)的4個(gè)字節(jié)(int型占用4字節(jié)),則這4個(gè)字節(jié)的空間保存著一個(gè)數(shù)4。&是取地址符號(hào),即把變量a的地址(即這4個(gè)字節(jié)的首地址)賦給指針p(記住指針p的類型和變量a的類型要保持一致,否則的話,要進(jìn)行類型轉(zhuǎn)換)。這樣子,指針p就保存著變量a的地址。我們?nèi)绻阎羔榩當(dāng)做內(nèi)存空間里面另外一個(gè)連續(xù)的4個(gè)字節(jié),那么這4個(gè)字節(jié)保存的數(shù)就是變量a的地址。printf("%d",*p)和printf("%d",a)的結(jié)果是一樣的。這里的*是取變量符號(hào)(與&剛好作用相反,通過(guò)變量的地址找到變量),與定義時(shí)int *p的*號(hào)作用不同(定義時(shí)的*表示該變量是個(gè)指針變量,而非是取它指向的變量)。 (2) 數(shù)組和指針的關(guān)系。 指針與數(shù)組是C語(yǔ)言中很重要的兩個(gè)概念,它們之間有著密切的關(guān)系,利用這種關(guān)系,可以增強(qiáng)處理數(shù)組的靈活性,加快運(yùn)行速度,本文著重討論指針與數(shù)組之間的聯(lián)系及在編程中的應(yīng)用。 1.指針與數(shù)組的關(guān)系 當(dāng)一個(gè)指針變量被初始化成數(shù)組名時(shí),就說(shuō)該指針變量指向了數(shù)組。如: char str[20], *ptr; ptr=str; ptr被置為數(shù)組str的第一個(gè)元素的地址,因?yàn)閿?shù)組名就是該數(shù)組的首地址,也是數(shù)組第一個(gè)元素的地址。此時(shí)可以認(rèn)為指針ptr就是數(shù)組str(反之不成立),這樣原來(lái)對(duì)數(shù)組的處理都可以用指針來(lái)實(shí)現(xiàn)。如對(duì)數(shù)組元素的訪問(wèn),既可以用下標(biāo)變量訪問(wèn),也可以用指針訪問(wèn)。 2.指向數(shù)組元素的指針 若有如下定義: int a[10], *pa; pa=a; 則p=&a[0]是將數(shù)組第1個(gè)元素的地址賦給了指針變量p。 實(shí)際上,C語(yǔ)言中數(shù)組名就是數(shù)組的首地址,所以第一個(gè)元素的地址可以用兩種方法獲得:p=&a[0]或p=a。 這兩種方法在形式上相像,其區(qū)別在于:pa是指針變量,a是數(shù)組名。值得注意的是:pa是一個(gè)可以變化的指針變量,而a是一個(gè)常數(shù)。因?yàn)閿?shù)組一經(jīng)被說(shuō)明,數(shù)組的地址也就是固定的,因此a是不能變化的,不允許使用a++、++a或語(yǔ)句a+=10,而pa++、++pa、pa+=10則是正確的。由此可見(jiàn),此時(shí)指針與數(shù)組融為一體。 3.指針與一維數(shù)組 理解指針與一維數(shù)組的關(guān)系,首先要了解在編譯系統(tǒng)中,一維數(shù)組的存儲(chǔ)組織形式和對(duì)數(shù)組元素的訪問(wèn)方法。 一維數(shù)組是一個(gè)線形表,它被存放在一片連續(xù)的內(nèi)存單元中。C語(yǔ)言對(duì)數(shù)組的訪問(wèn)是通過(guò)數(shù)組名(數(shù)組的起始地址)加上相對(duì)于起始地址的相對(duì)量(由下標(biāo)變量給出),得到要訪問(wèn)的數(shù)組元素的單元地址,然后再對(duì)計(jì)算出的單元地址的內(nèi)容進(jìn)行訪問(wèn)。通常把數(shù)據(jù)類型所占單元的字節(jié)個(gè)數(shù)稱為擴(kuò)大因子。 實(shí)際上編譯系統(tǒng)將數(shù)組元素的形式a[i]轉(zhuǎn)換成*(a+i),然后才進(jìn)行運(yùn)算。對(duì)于一般數(shù)組元素的形式:<數(shù)組名>[<下標(biāo)表達(dá)式>],編譯程序?qū)⑵滢D(zhuǎn)換成:*(<數(shù)組名>+<下標(biāo)表達(dá)式>),其中下標(biāo)表達(dá)式為:下標(biāo)表達(dá)式*擴(kuò)大因子。整個(gè)式子計(jì)算結(jié)果是一個(gè)內(nèi)存地址,最后的結(jié)果為:*<地址>=<地址所對(duì)應(yīng)單元的地址的內(nèi)容>。由此可見(jiàn),C語(yǔ)言對(duì)數(shù)組的處理,實(shí)際上是轉(zhuǎn)換成指針地址的運(yùn)算。 數(shù)組與指針暗中結(jié)合在一起。因此,任何能由下標(biāo)完成的操作,都可以用指針來(lái)實(shí)現(xiàn),一個(gè)不帶下標(biāo)的數(shù)組名就是一個(gè)指向該數(shù)組的指針。 4.指針與多維數(shù)組 用指針變量可以指向一維數(shù)組,也可以指向多維數(shù)組。但在概念上和使用上,多維數(shù)組的指針比一維數(shù)組的指針要復(fù)雜一些。 例如,在一個(gè)三維數(shù)組中,引用元素c[i][j][k]的地址計(jì)算最終將換成:*(*(*(c+i)+j)+k)。了解了多維數(shù)組的存儲(chǔ)形式和訪問(wèn)多維數(shù)組元素的內(nèi)部轉(zhuǎn)換公式后,再看當(dāng)一個(gè)指針變量指向多維數(shù)組及其元素的情況。 1 指向數(shù)組元素的指針變量 若有如下說(shuō)明: int a[3][4]; int *p; p=a; p是指向整型變量的指針;p=a使p指向整型二維數(shù)組a的首地址。 ?。?*(p+1)+2)表示取a[1][2]的內(nèi)容;*p表示取a[0][1]的內(nèi)容,因?yàn)閜是指向整型變量的指針;p++表示p的內(nèi)容加1,即p中存放的地址增加一個(gè)整型量的字節(jié)數(shù)2,從而使p指向下一個(gè)整型量a[0][1]。 2 指向由j個(gè)整數(shù)組成的一維數(shù)組的指針變量 當(dāng)指針變量p不是指向整型變量,而是指向一個(gè)包含j個(gè)元素的一維數(shù)組。如果p=a[0],則p++不是指向a[0][1],而是指向a[1]。這時(shí)p的增值以一維數(shù)組的長(zhǎng)度為單位。 5.指針與字符數(shù)組 C語(yǔ)言中許多字符串操作都是由指向字符數(shù)組的指針及指針的運(yùn)算來(lái)實(shí)現(xiàn)的。因?yàn)閷?duì)于字符串來(lái)說(shuō),一般都是嚴(yán)格的順序存取方式,使用指針可以打破這種存取方式,更為靈活地處理字符串。 另外由于字符串以′\0′作為結(jié)束符,而′\0′的ASCII碼是0,它正好是C語(yǔ)言的邏輯假值,所以可以直接用它作為判斷字符串結(jié)束的條件,而不需要用字符串的長(zhǎng)度來(lái)判斷。C語(yǔ)言中類似的字符串處理函數(shù)都是用指針來(lái)完成,使程序運(yùn)行速度更快、效率更高,而且更易于理解。- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語(yǔ)言 實(shí)驗(yàn) 報(bào)告 范文
鏈接地址:http://m.jqnhouse.com/p-6464656.html