




已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
指針的概念 指針變量 指針與數(shù)組 指針與函數(shù) 返回指針值的函數(shù) 前言 C程序設(shè)計(jì)中使用指針可以 使程序簡(jiǎn)潔 緊湊 高效有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)動(dòng)態(tài)分配內(nèi)存得到多于一個(gè)的函數(shù)返回值 指針的概念 變量與地址 程序中 inti floatk 內(nèi)存中每個(gè)字節(jié)有一個(gè)編號(hào) 地址 i k 編譯或函數(shù)調(diào)用時(shí)為其分配內(nèi)存單元 變量是對(duì)程序中數(shù)據(jù)存儲(chǔ)空間的抽象 指針 一個(gè)變量的地址指針變量 專門存放變量地址的變量叫 2000 指針 指針變量 變量的內(nèi)容 變量的地址 指針與指針變量 與 運(yùn)算符 含義 含義 取變量的地址單目運(yùn)算符優(yōu)先級(jí) 2結(jié)合性 自右向左 含義 取指針?biāo)赶蜃兞康膬?nèi)容單目運(yùn)算符優(yōu)先級(jí) 2結(jié)合性 自右向左 兩者關(guān)系 互為逆運(yùn)算理解 i pointer 指針變量 它的內(nèi)容是地址量 i pointer 指針的目標(biāo)變量 它的內(nèi)容是數(shù)據(jù) i pointer 指針變量占用內(nèi)存的地址 i pointer i i pointer i i pointer i i pointer i i pointer i i pointer i 直接訪問與間接訪問 直接訪問 按變量地址存取變量值間接訪問 通過存放變量地址的變量去訪問變量 例i 3 直接訪問 3 例 i pointer 20 間接訪問 20 例k i 直接訪問k i pointer 間接訪問 10 例k i k i pointer 例子圖解 2指針變量 指針變量與其所指向的變量之間的關(guān)系 指針變量的定義一般形式 存儲(chǔ)類型 數(shù)據(jù)類型 指針名 合法標(biāo)識(shí)符 指針變量本身的存儲(chǔ)類型 指針的目標(biāo)變量的數(shù)據(jù)類型 表示定義指針變量不是 運(yùn)算符 例int p1 p2 float q staticchar name 注意 1 int p1 p2 與int p1 p2 2 指針變量名是p1 p2 不是 p1 p23 指針變量只能指向定義時(shí)所規(guī)定類型的變量4 指針變量定義后 變量值不確定 應(yīng)用前必須先賦值 指針變量的初始化 一般形式 存儲(chǔ)類型 數(shù)據(jù)類型 指針名 初始地址值 賦給指針變量 不是賦給目標(biāo)變量 例inti int p 變量必須已說明過類型應(yīng)一致 例inti int p 用已初始化指針變量作初值 例main inti staticint p 不能用auto變量的地址去初始化static型指針 例main inti 10 int p p i printf d p 危險(xiǎn) 例main inti 10 k int p p 指針變量必須先賦值 再使用 零指針 空指針 定義 指針變量值為零表示 int p 0 p指向地址為0的單元 系統(tǒng)保證該單元不作它用表示指針變量值沒有意義 defineNULL0int p NULL p NULL與未對(duì)p賦值不同用途 避免指針變量的非法引用在程序中常作為狀態(tài)比較 例int p while p NULL void 類型指針表示 void p 使用時(shí)要進(jìn)行強(qiáng)制類型轉(zhuǎn)換 例char p1 void p2 p1 char p2 p2 void p1 表示不指定p是指向哪一種類型數(shù)據(jù)的指針變量 零指針與空類型指針 main int p1 p2 p a b scanf d d 運(yùn)行結(jié)果 a 5 b 9max 9 min 5 5 2006 9 2008 2006 2008 2006 例輸入兩個(gè)數(shù) 并使其從大到小輸出 指針變量作為函數(shù)參數(shù) 地址傳遞 特點(diǎn) 共享內(nèi)存 雙向 傳遞 swap intx inty inttemp temp x x y y temp main inta b scanf d d 例將數(shù)從大到小輸出 5 9 5 5 9 COPY 特點(diǎn) 共享內(nèi)存 雙向 傳遞 swap intx inty inttemp temp x x y y temp main inta b scanf d d 例將數(shù)從大到小輸出 值傳遞 5 9 運(yùn)行結(jié)果 5 9 指針變量作為函數(shù)參數(shù) 地址傳遞 swap int p1 int p2 intp p p1 p1 p2 p2 p main inta b int pointer 1 pointer 2 scanf d d 5 9 2000 2002 5 9 COPY 5 例將數(shù)從大到小輸出 swap int p1 int p2 intp p p1 p1 p2 p2 p main inta b int pointer 1 pointer 2 scanf d d 5 9 2000 2002 5 9 運(yùn)行結(jié)果 9 5 地址傳遞 例將數(shù)從大到小輸出 1 指向數(shù)組元素的指針變量 3指針與數(shù)組 例intarray 10 int p p 數(shù)組名是表示數(shù)組首地址的地址常量 指針變量的賦值運(yùn)算p 指針變量p2值 p1 不能把一個(gè)整數(shù) p 也不能把p的值 整型變量 如inti p p 1000 i p 指針變量與其指向的變量具有相同數(shù)據(jù)類型 指針的運(yùn)算 p i p i d i為整型數(shù) d為p指向的變量所占字節(jié)數(shù) p p p i p i p i p i等若p1與p2指向同一數(shù)組 p1 p2 兩指針間元素個(gè)數(shù) p1 p2 dp1 p2無意義 例p指向float數(shù) 則p 1 p 1 4 例p指向int型數(shù)組 且p 則p 1指向a 1 例inta 10 int p 例inta 10 int p1 1 指針的算術(shù)運(yùn)算 若p1和p2指向同一數(shù)組 則p1p2表示p1指的元素在后p1 p2表示p1與p2指向同一元素若p1與p2不指向同一數(shù)組 比較無意義p NULL或p NULL 指針變量的關(guān)系運(yùn)算 變址運(yùn)算符a i a i a i p i p i a i main inta 5 pa i for i 0 i 5 i a i i 1 pa a for i 0 i 5 i printf pa d d n i pa i for i 0 i 5 i printf a d d n i a i for i 0 i 5 i printf pa d d n i pa i for i 0 i 5 i printf a d d n i a i 例數(shù)組元素的引用方法 例inta 1 2 3 4 5 6 7 8 9 10 p a i 數(shù)組元素地址的正確表示 A a 1 B a C p D p i 數(shù)組名是地址常量p p a a a 1 a 2 例voidmain inta 5 8 7 6 2 7 3 inty p 輸出 56 6 例注意指針變量的運(yùn)算 main inti p a 7 p a for i 0 i 7 i scanf d p printf n for i 0 i 7 i p printf d p p a 指針變量可以指到數(shù)組后的內(nèi)存單元 例注意指針的當(dāng)前值 數(shù)組名作函數(shù)參數(shù) 是地址傳遞數(shù)組名作函數(shù)參數(shù) 實(shí)參與形參的對(duì)應(yīng)關(guān)系 數(shù)組名作函數(shù)參數(shù) 實(shí)參與形參均用數(shù)組 voidinv intx intn intt i j m n 1 2 for i 0 i m i j n 1 i t x i x i x j x j t main inti a 10 3 7 9 11 0 6 7 5 4 2 inv a 10 printf Thearrayhasbeenreverted n for i 0 i 10 i printf d a i printf n m 4 例將數(shù)組a中的n個(gè)整數(shù)按相反順序存放 1 voidinv int x intn intt p i j m n 1 2 i x j x n 1 p x m for i p i j t i i j j t main inti a 10 3 7 9 11 0 6 7 5 4 2 inv a 10 printf Thearrayhasbeenreverted n for i 0 i 10 i printf d a i printf n 實(shí)參用數(shù)組 形參用指針變量 例將數(shù)組a中的n個(gè)整數(shù)按相反順序存放 2 voidinv int x intn intt i j p m n 1 2 i x j x n 1 p x m for i p i j t i i j j t main inti a 10 p a for i 0 i 10 i p scanf d p p a inv p 10 printf Thearrayhasbeenreverted n for p a p a 10 p printf d p 實(shí)參與形參均用指針變量 例將數(shù)組a中的n個(gè)整數(shù)按相反順序存放 3 voidinv intx intn intt i j m n 1 2 for i 0 i m i j n 1 i t x i x i x j x j t main inti a 10 p a for i 0 i 10 i p scanf d p p a inv p 10 printf Thearrayhasbeenreverted n for p arr p arr 10 p printf d p 實(shí)參用指針變量 形參用數(shù)組 例將數(shù)組a中的n個(gè)整數(shù)按相反順序存放 4 int p與intq 10 數(shù)組名是指針 地址 常量p q p i是q i 的地址數(shù)組元素的表示方法 下標(biāo)法和指針法 即若p q 則p i q i p i q i 形參數(shù)組實(shí)質(zhì)上是指針變量 即intq int q在定義指針變量 不是形參 時(shí) 不能把int p寫成intp 系統(tǒng)只給p分配能保存一個(gè)指針值的內(nèi)存區(qū) 一般2字節(jié) 而給q分配2 10字節(jié)的內(nèi)存區(qū) 一級(jí)指針變量與一維數(shù)組的關(guān)系 4指針與字符串字符串表示形式用字符數(shù)組實(shí)現(xiàn) 例main charstring IloveChina printf s n string printf s n string 7 例main char string IloveChina printf s n string string 7 while string putchar string 0 首地址處的數(shù)據(jù)元素string 字符指針初始化 把字符串首地址賦給string char string string IloveChina string 0 用字符指針實(shí)現(xiàn) 字符串指針作函數(shù)參數(shù) 例用函數(shù)調(diào)用實(shí)現(xiàn)字符串復(fù)制 1 用字符數(shù)組作參數(shù) 2 用字符指針變量作參數(shù) voidcopy string charfrom charto inti 0 while from i 0 to i from i i to i 0 main chara Iamateacher charb Youareastudent printf string a s nstring b s n a b copy string a b printf nstring a s nstring b s n a b voidcopy string char from char to for from 0 from to to from to 0 main char a Iamateacher char b Youareastudent printf string a s nstring b s n a b copy string a b printf nstring a s nstring b s n a b 字符指針變量與字符數(shù)組 char cp 與charstr 20 str由若干元素組成 每個(gè)元素放一個(gè)字符 而cp中存放字符串首地址charstr 20 str IloveChina char cp cp IloveChina str是地址常量 cp是地址變量cp接受鍵入字符串時(shí) 必須先開辟存儲(chǔ)空間 例charstr 10 scanf s str 而char cp scanf s cp 改為 char cp str 10 cp str scanf s cp 字符串與數(shù)組關(guān)系 字符串用一維字符數(shù)組存放字符數(shù)組具有一維數(shù)組的所有特點(diǎn)數(shù)組名是指向數(shù)組首地址的地址常量數(shù)組元素的引用方法可用指針法和下標(biāo)法數(shù)組名作函數(shù)參數(shù)是地址傳遞等區(qū)別存儲(chǔ)格式 字符串結(jié)束標(biāo)志賦值方式與初始化輸入輸出方式 s c charstr Hello charstr Hello charstr H e l l o char cp Hello inta 1 2 3 4 5 int p 1 2 3 4 5 charstr 10 cp inta 10 p str Hello cp Hello a 1 2 3 4 5 p 1 2 3 4 5 scanf s str printf s str gets str puts str 多級(jí)指針 定義 指向指針的指針一級(jí)指針 指針變量中存放目標(biāo)變量的地址 例int p1 int p2 inti 3 p2 二級(jí)指針 指針變量中存放一級(jí)指針變量的地址 例int p inti 3 p 一級(jí)指針 單級(jí)間接尋址 二級(jí)指針 一級(jí)指針 目標(biāo)變量 二級(jí)間接尋址 定義形式 存儲(chǔ)類型 數(shù)據(jù)類型 指針名 如char p 例inti p p p是二級(jí)指針 不能用變量地址為其賦值 指針本身的存儲(chǔ)類型 最終目標(biāo)變量的數(shù)據(jù)類型 p是p間接指向?qū)ο蟮牡刂?p是p間接指向?qū)ο蟮闹?例inti 3 int p1 int p2
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國發(fā)光字光源行業(yè)風(fēng)險(xiǎn)評(píng)估及發(fā)展?jié)摿ρ芯繄?bào)告
- 2025至2030中國印楝素市場(chǎng)運(yùn)行狀況與發(fā)展的戰(zhàn)略建議報(bào)告
- 2025至2030中國減震膠行業(yè)供給分析與投資價(jià)值評(píng)估報(bào)告
- 2025至2030中國農(nóng)村社會(huì)養(yǎng)老保險(xiǎn)行業(yè)運(yùn)營態(tài)勢(shì)及需求前景研究報(bào)告
- 法學(xué)概論的課程評(píng)價(jià)標(biāo)準(zhǔn)探討試題及答案
- 戰(zhàn)略決策中的外部風(fēng)險(xiǎn)因素分析試題及答案
- 可燃冰開采技術(shù)預(yù)研報(bào)告:2025年深海開采技術(shù)安全評(píng)估體系
- 2025年裝備制造業(yè)自主創(chuàng)新能力提升產(chǎn)業(yè)創(chuàng)新人才培養(yǎng)模式研究報(bào)告
- 企業(yè)文化重塑數(shù)字化轉(zhuǎn)型的關(guān)鍵步驟
- 2025年文化產(chǎn)業(yè)專項(xiàng)資金申請(qǐng):項(xiàng)目評(píng)估與可行性研究報(bào)告
- GB/T 11361-2008同步帶傳動(dòng)梯形齒帶輪
- GB 5009.121-2016食品安全國家標(biāo)準(zhǔn)食品中脫氫乙酸的測(cè)定
- 《電業(yè)安全工作規(guī)程》
- 處置室工作制度(6篇)
- 二次配線工藝標(biāo)準(zhǔn)守則
- 骨髓穿刺術(shù)評(píng)分表
- 海底撈火鍋店各崗位職責(zé)
- 發(fā)證機(jī)關(guān)所在地區(qū)代碼表
- 車輛安全設(shè)施設(shè)備定期檢查臺(tái)賬
- Q∕GDW 10799.7-2020 國家電網(wǎng)有限公司電力安全工作規(guī)程 第7部分:調(diào)相機(jī)部分
- 田中靖久頸椎病癥狀量表20分法
評(píng)論
0/150
提交評(píng)論