C程序設(shè)計第四版課件第8章善于利用指針_第1頁
C程序設(shè)計第四版課件第8章善于利用指針_第2頁
C程序設(shè)計第四版課件第8章善于利用指針_第3頁
C程序設(shè)計第四版課件第8章善于利用指針_第4頁
C程序設(shè)計第四版課件第8章善于利用指針_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C程序設(shè)計第四版課件第8章善于利用指針目錄指針的基本概念指針與數(shù)組指針與函數(shù)動態(tài)內(nèi)存分配指針的高級應(yīng)用01指針的基本概念指針是一種變量,用于存儲內(nèi)存地址。指針變量存儲的是其他變量的地址,而非該變量的值。通過指針可以間接訪問其所指向的內(nèi)存地址中的數(shù)據(jù)。指針的定義

指針的聲明與初始化聲明指針變量時,需要在變量名前加上星號(*)。初始化指針變量時,需要將其設(shè)置為某個變量的地址。未初始化的指針變量可能指向任何位置,因此使用前應(yīng)確保指針已被正確初始化。可以對指針進(jìn)行加法或減法運算,以改變指針?biāo)赶虻膬?nèi)存地址??梢允褂弥羔橀g接訪問其所指向的數(shù)據(jù),例如通過解引用運算符(*)獲取指針?biāo)赶虻闹祷蛐薷脑撝???梢詫⒁粋€變量的地址賦值給指針變量。指針的賦值與運算02指針與數(shù)組數(shù)組指針的算術(shù)運算可以通過對數(shù)組指針進(jìn)行算術(shù)運算來訪問數(shù)組中的元素。指向數(shù)組的指針變量可以定義一個指向數(shù)組的指針變量,通過該變量可以訪問整個數(shù)組。數(shù)組名即是指針在C語言中,數(shù)組名本質(zhì)上是指向數(shù)組第一個元素的指針。數(shù)組的指針03指向元素的指針變量可以定義一個指向數(shù)組中某個元素的指針變量,通過該變量可以訪問該元素。01使用指針訪問數(shù)組元素通過指針可以訪問數(shù)組中的元素,即通過解引用指針來獲取元素的值。02指針的算術(shù)運算可以通過對指針進(jìn)行算術(shù)運算來訪問數(shù)組中的相鄰元素。通過指針訪問數(shù)組元素123在C語言中,字符串常量被存儲在只讀內(nèi)存區(qū)域,可以通過指針來訪問字符串常量。字符串常量的指針字符數(shù)組和字符指針都可以用來表示字符串,但它們的存儲方式和訪問方式略有不同。字符數(shù)組與字符指針C標(biāo)準(zhǔn)庫中提供了許多用于字符串處理的函數(shù),如strlen、strcpy、strcat等,這些函數(shù)都使用指針作為參數(shù)。字符串處理函數(shù)指針與字符串03指針與函數(shù)通過指針作為函數(shù)參數(shù),可以將變量的地址傳遞給函數(shù),從而在函數(shù)內(nèi)部直接修改該變量的值。傳遞地址提高效率靈活處理通過傳遞地址,避免了數(shù)據(jù)的復(fù)制,提高了函數(shù)調(diào)用的效率。指針作為參數(shù)可以傳遞數(shù)組、結(jié)構(gòu)體等復(fù)雜數(shù)據(jù)類型,使得函數(shù)更加靈活和通用。030201指針作為函數(shù)參數(shù)返回指針的函數(shù)可以用于動態(tài)內(nèi)存分配,如使用`malloc`、`calloc`等函數(shù)為變量分配內(nèi)存空間,并返回指向該內(nèi)存空間的指針。動態(tài)內(nèi)存分配字符串處理函數(shù)如`strtok`、`strcpy`等返回指向字符串的指針,方便對字符串進(jìn)行操作。字符串處理返回指針的函數(shù)可以用于創(chuàng)建自定義數(shù)據(jù)結(jié)構(gòu),如鏈表、樹等,通過返回指向節(jié)點結(jié)構(gòu)的指針實現(xiàn)。自定義數(shù)據(jù)結(jié)構(gòu)返回指針的函數(shù)函數(shù)表指向函數(shù)的指針可以用于實現(xiàn)函數(shù)表,將一系列函數(shù)存儲在一個數(shù)組中,通過索引調(diào)用不同的函數(shù)?;卣{(diào)函數(shù)指向函數(shù)的指針可以作為回調(diào)函數(shù)使用,在特定事件或條件下調(diào)用指定的函數(shù)。高階函數(shù)指向函數(shù)的指針可以作為參數(shù)傳遞給其他函數(shù),使得該函數(shù)具有更高級別的抽象能力,實現(xiàn)高階函數(shù)的概念。指向函數(shù)的指針04動態(tài)內(nèi)存分配malloc函數(shù)用于在堆區(qū)動態(tài)分配內(nèi)存,其參數(shù)是要分配的字節(jié)數(shù)。定義如果分配成功,返回一個指向被分配內(nèi)存的指針;如果分配失敗,返回NULL。返回值int*ptr=(int*)malloc(10*sizeof(int));用法示例使用malloc分配的內(nèi)存需要手動釋放,否則會造成內(nèi)存泄漏。注意點使用malloc函數(shù)分配內(nèi)存注意點使用calloc分配的內(nèi)存需要手動釋放,否則會造成內(nèi)存泄漏。定義calloc函數(shù)用于在堆區(qū)動態(tài)分配內(nèi)存,并初始化分配的內(nèi)存為0,其參數(shù)是要分配的元素個數(shù)和每個元素的大小。返回值如果分配成功,返回一個指向被分配內(nèi)存的指針;如果分配失敗,返回NULL。用法示例int*ptr=(int*)calloc(10,sizeof(int));使用calloc函數(shù)分配內(nèi)存定義free函數(shù)用于釋放之前使用malloc或calloc等函數(shù)分配的內(nèi)存。用法示例free(ptr);注意點釋放的內(nèi)存指針必須是由malloc、calloc等函數(shù)返回的,否則會導(dǎo)致未定義行為。同時,釋放的內(nèi)存指針在使用free之后不應(yīng)再被使用,否則會導(dǎo)致未定義行為。參數(shù)free函數(shù)的參數(shù)是一個指向要釋放的內(nèi)存的指針。使用free函數(shù)釋放內(nèi)存05指針的高級應(yīng)用指向指針的指針是指一個指針變量,它存儲的是另一個指針變量的地址,而不是變量的值。通過指向指針的指針,可以間接地訪問和修改變量的值,增加了對內(nèi)存地址操作的靈活性。指向指針的指針在處理動態(tài)內(nèi)存分配、函數(shù)參數(shù)傳遞和多維數(shù)組等場景中非常有用。指向指針的指針指針數(shù)組是一個數(shù)組,數(shù)組中的每個元素都是一個指針變量。指針數(shù)組可以用來存儲多個變量的地址,通過數(shù)組索引訪問不同的地址,實現(xiàn)動態(tài)內(nèi)存分配和字符串處理等功能。例如,char*arr[10]表示一個包含10個字符指針的數(shù)組,每個指針可以指向一個字符串。指針數(shù)組二級指針是指向

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論