C語(yǔ)言試驗(yàn)報(bào)告范文_第1頁(yè)
C語(yǔ)言試驗(yàn)報(bào)告范文_第2頁(yè)
C語(yǔ)言試驗(yàn)報(bào)告范文_第3頁(yè)
C語(yǔ)言試驗(yàn)報(bào)告范文_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)科學(xué)與技術(shù)系 C 語(yǔ)言實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱(chēng):指針及其應(yīng)用日期:得分:指導(dǎo)老師:專(zhuān)業(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)行以下程序,并從中了解變量的指針和指針變量的概念。first, crC ADocuents ni SettingsUi54245052d8#1245052d84245048d84245048dPress any hy to continue.(2) 運(yùn)行以下程序,觀察&aO、&ai和p的變化,然后回答以下問(wèn)題:1.

2、程序的功能是什么?2.在開(kāi)始進(jìn)入循環(huán)體之前,p指向誰(shuí)?3.循環(huán)每增加一次,p的值(地址)增加多少?它指向誰(shuí)?4.退出循環(huán)后,p指向誰(shuí)?5你是否初步掌握了通過(guò)指針變量引用數(shù)組元素的方法?| 9SKHJ.Cninciude5tdio.h kt iuin()Fint i?p,p0,a5=5,6,?,8,9; P=a;艸叩;printFlki 5報(bào)“;return I;ABocuients aid SettingAdiiniss=35Press any Itey to continue(3) 先分析以下程序的運(yùn)行結(jié)果,然后上機(jī)驗(yàn)證,并通過(guò)此例掌握通過(guò)指針變 量引用數(shù)組ttinciudeintint ,

3、b=5,*p; p-fta;prints (Id itudnaiBaBp);IM p-8;printfCtd.tudXna.p);卩智;printF(*%d,%udna,p);! h=10;pKintF(%d1%udnlaJp);return 0;IP元素的各種方法。tiraclixktdiD.h?irt nuin0int if5bssMp舟習(xí)屮*朋;|M;Hirl=B;l5;i+*)51祖|;fw(i=fl;iiS;i+)Rr(戶(hù)當(dāng)斛嚴(yán))53*=*p:pd;For(X 出琨樹(shù)細(xì)邛“:printf(Vi 51-tiJ, s2-|dl, sHi* 乩-甘二則攪,曲,珂;ntuii I:(4) 編

4、寫(xiě)函數(shù), 將n個(gè)數(shù)按原來(lái)的順序的逆序排列(要求用指針實(shí)現(xiàn)), 然后 編寫(xiě)主函數(shù)完成:1輸入10個(gè)數(shù);2調(diào)用此函數(shù)進(jìn)行重排;3輸出重排后的結(jié)果。ir lh. cvoid sort(int *p);int a1Q,if*p;p-a;prints1排序前的數(shù):W); for( i=&iH;i+) scanFCW1Bp+iJ;sort(a):printf(排序后的數(shù):n,B); f or(i-i;iH;i+) prlntf (IBt3dBlv(p+l);uoid sort(int *p)int *qtt;f Oh*(q=p+N-1 ;p 若 3=L5 s4*lSPreEi 鬲 njj key

5、to contirue則我們可以繼續(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的類(lèi)型和 變量a的類(lèi)型要保持一致,否則的話(huà),要進(jìn)行類(lèi)型轉(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é)果是一樣

6、的。 這里的*是取變量符號(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 str20,ptr;ptr=str;ptr被置為數(shù)組str的第一個(gè)元素的地址, 因?yàn)閿?shù)組名就是該數(shù)組的首地址, 也

7、是數(shù)組第一個(gè)元素的地址。 此時(shí)可以認(rèn)為指針ptr就是數(shù)組str( 反之不成立), 這樣原來(lái)對(duì)數(shù)組的處理都可以用指針來(lái)實(shí)現(xiàn)。 如對(duì)數(shù)組元素的訪(fǎng)問(wèn), 既可以用下 標(biāo)變量訪(fǎng)問(wèn),也可以用指針訪(fǎng)問(wèn)。2指向數(shù)組元素的指針若有如下定義:int a10,pa;pa=a;則p=&a0是將數(shù)組第1個(gè)元素的地址賦給了指針變量p。實(shí)際上,C語(yǔ)言中數(shù)組名就是數(shù)組的首地址,所以第一個(gè)元素的地址可以用 兩種方法獲得:p=&a0或p=a。這兩種方法在形式上相像,其區(qū)別在于:pa是指針變量,a是數(shù)組名。值得 注意的是:pa是一個(gè)可以變化的指針變量,而a是一個(gè)常數(shù)。因?yàn)閿?shù)組一經(jīng)被 說(shuō)明,數(shù)組的地址也就是固定的,因

8、此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ù)組元素的訪(fǎng)問(wèn)方法。一維數(shù)組是一個(gè)線(xiàn)形表,它被存放在一片連續(xù)的內(nèi)存單元中。C語(yǔ)言對(duì)數(shù)組 的訪(fǎng)問(wèn)是通過(guò)數(shù)組名(數(shù)組的起始地址)加上相對(duì)于起始地址的相對(duì)量(由下標(biāo) 變量給出),得到要訪(fǎng)問(wèn)的數(shù)組元素的單元地址,然后再對(duì)計(jì)算出的單元地址的內(nèi)容進(jìn)行訪(fǎng)問(wèn)。通常把數(shù)據(jù)類(lèi)型所占單元的字節(jié)個(gè)數(shù)稱(chēng)為擴(kuò)大因子。實(shí)際上編譯系統(tǒng)將數(shù)組元素的形式ai轉(zhuǎn)換成(ai),然后才進(jìn)行運(yùn)算。

9、 對(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ù)組中,引用元素cijk的地址計(jì)算最終將換成:

10、*(*(*(c+i)+j)+k)。了解了多維數(shù)組的存儲(chǔ)形式和訪(fǎng)問(wèn)多維數(shù)組元素的內(nèi) 部轉(zhuǎn)換公式后,再看當(dāng)一個(gè)指針變量指向多維數(shù)組及其元素的情況。1指向數(shù)組元素的指針變量若有如下說(shuō)明:int a34;int*p;p=a;p是指向整型變量的指針;p=a使p指向整型二維數(shù)組a的首地址。*(*(p+1)+2)表示取a12的內(nèi)容;*p表示取a01的內(nèi)容,因?yàn)閜是指向整型變量的指針;p+表示p的內(nèi)容加1,即p中存放的地址增加一個(gè) 整型量的字節(jié)數(shù)2,從而使p指向下一個(gè)整型量a01。2指向由j個(gè)整數(shù)組成的一維數(shù)組的指針變量當(dāng)指針變量p不是指向整型變量, 而是指向一個(gè)包含j個(gè)元素的一維數(shù)組。 如果p=a0,則p+不是指向a01,而是指向a1。這時(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)格

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論