




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
地址指針的基本概念
在計算機中,一般把存儲器中的一個字節稱為一個內存單元,不同的數據類型所占用的內存單元數不等,如整型量占2個單元,字符量占1個單元等。為了正確地訪問這些內存單元,必須為每個內存單元編上號。根據一個內存單元的編號即可準確地找到該內存單元,內存單元的編號也叫做地址,通常把這個地址稱為指針。
內存單元的指針和內存單元的內容是兩個不同的概念。
35011A定義指針的目的是為了通過指針去訪問內存單元。變量的指針就是變量的地址。存放變量地址的變量是指針變量。既然指針變量的值是一個地址,那么這個地址不僅可以是變量的地址,也可以是其它數據結構的地址。在一個指針變量中存放一個數組或一個函數的首地址有何意義呢?
因為數組或函數都是連續存放的。通過訪問指針變量取得了數組或函數的首地址,也就找到了該數組或函數。這樣一來,凡是出現數組,函數的地方都可以用一個指針變量來表示,只要該指針變量中賦予數組或函數的首地址即可。這樣做將會使程序的概念十分清楚,程序本身也精練,高效。
在C語言中,一種數據類型或數據結構往往都占有一組連續的內存單元。用“地址”這個概念并不能很好地描述一種數據類型或數據結構,而“指針”雖然實際上也是一個地址,但它卻是一個數據結構的首地址,它是“指向”一個數據結構的,因而概念更為清楚,表示更為明確。
這也是引入“指針”概念的一個重要原因。
C語言中的指針在C語言中,允許用一個變量來存放指針,這種變量稱為指針變量。因此,一個指針變量的值就是某個內存單元的地址或稱為某內存單元的指針。圖中,設有字符變量C,其內容為“K”(ASCII碼為十進制數75),C占用了011A號單元(地址用十六進數表示)。設有指針變量P,內容為011A,這種情況我們稱為P指向變量C,或說P是指向變量C的指針。為了表示指針變量和它所指向的變量之間的關系,在程序中用“*”符號表示“指向”,例如,i_pointer代表指針變量,而*i_pointer是i_pointer所指向的變量。下兩語句作用相同:i=3;*i_pointer=3;第二個語句的含義是將3賦給指針變量i_pointer所指向的變量。有關指針的數據類型的復習
定義含義inti;定義整型變量iint*pp為指向整型數據的指針變量inta[n];定義整型數組a,它有n個元素int*p[n];定義指針數組p,它由n個指向整型數據的指針元素組成int(*p)[n];p為指向含n個元素的一維數組的指針變量intf();f為帶回整型函數值的函數int*p();p為帶回一個指針的函數,該指針指向整型數據int(*p)();p為指向函數的指針,該函數返回一個整型值int**p;P是一個指針變量,它指向一個指向整型數據的指針變量對指針變量的定義包括三個內容:(1)
指針類型說明,即定義變量為一個指針變量;
(2)
指針變量名;
(3)
變量值(指針)所指向的變量的數據類型其一般形式為:類型說明符*變量名;其中,*表示這是一個指針變量,變量名即為定義的指針變量名,類型說明符表示本指針變量所指向的變量的數據類型。
例如:int*p1;表示p1是一個指針變量,它的值是某個整型變量的地址。或者說p1指向一個整型變量。至于p1究竟指向哪一個整型變量,應由向p1賦予的地址來決定。再如:int*p2;/*p2是指向整型變量的指針變量*/
float*p3;/*p3是指向浮點變量的指針變量*/char*p4;/*p4是指向字符變量的指針變量*/應該注意的是,一個指針變量只能指向同類型的變量,如P3只能指向浮點變量,不能時而指向一個浮點變量,時而又指向一個字符變量。
指針運算的小結
現把全部指針運算列出如下:1)
指針變量加(減)一個整數:例如:p++、p--、p+i、p-i、p+=i、p-=I一個指針變量加(減)一個整數并不是簡單地將原值加(減)一個整數,而是將該指針變量的原值(是一個地址)和它指向的變量所占用的內存單元字節數加(減)。P++
——P指向下一個元素*p++=*(p++)——先取*P,后使P加1*(++p)——先使P自加,再取*P(*p)++——P所指向的元素值加12)
指針變量賦值:將一個變量的地址賦給一個指針變量。p=&a;(將變量a的地址賦給p)p=array;(將數組array的首地址賦給p)p=&array[i];(將數組array第i個元素的地址賦給p)p=max;(max為已定義的函數,將max的入口地址賦給p)p1=p2;(p1和p2都是指針變量,將p2的值賦給p1)注意:不能如此:p=1000;3)
指針變量可以有空值,即該指針變量不指向任何變量:p=NULL;4)兩個指針變量可以相減:如果兩個指針變量指向同一個數組的元素,則兩個指針變量值之差是兩個指針之間的元素個數。5)
兩個指針變量比較:如果兩個指針變量指向同
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 爆破安全培訓試題及答案
- 膀胱腫瘤考試題及答案
- 安全作業考試題庫及答案
- 安全員試題及答案
- 安全管理試題及答案
- 中國受辱課件在線觀看
- 顧客為先的培訓課件
- 群發中暑急救培訓課件
- 村醫死因培訓課件
- 原諒的幼兒繪本課件
- 寧夏固原市第六中學2022-2023學年七年級上學期分班考試語文檢測卷
- 《電工與電子技術基礎(第4版)》中職全套教學課件
- 北師大版生物八年級下冊23章1節生物的生存依賴一定的環境(44張)課件-課件
- 2024年工業廢水處理工(高級)技能鑒定考試題庫-下(多選、判斷題)
- 2023年全國職業院校技能大賽-聲樂、器樂表演大賽賽項規程
- NB∕SH∕T 0001-2019 電纜瀝青標準規范
- DL∕T 5342-2018 110kV~750kV架空輸電線路鐵塔組立施工工藝導則
- DL∕T 1688-2017 氣體絕緣金屬封閉開關設備狀態評價導則
- 江西省2024年中考數學試卷(含答案)
- 榆神礦區郭家灘煤礦(700 萬噸-年)項目環評
- 合同訂立規范情況
評論
0/150
提交評論