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