指針是通過地址來訪問變量的一種特殊的數據類型_第1頁
指針是通過地址來訪問變量的一種特殊的數據類型_第2頁
指針是通過地址來訪問變量的一種特殊的數據類型_第3頁
指針是通過地址來訪問變量的一種特殊的數據類型_第4頁
指針是通過地址來訪問變量的一種特殊的數據類型_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、指指 針針 指針是通過地址來訪問變量的一種特殊的數據指針是通過地址來訪問變量的一種特殊的數據類型,屬于動態的數據結構,它可以在需要時類型,屬于動態的數據結構,它可以在需要時產生,用完后則又可以取消或回收,以減少占產生,用完后則又可以取消或回收,以減少占用的內存空間。指針變量與其他類型的變量不用的內存空間。指針變量與其他類型的變量不同,它占有的不是數據,而是地址。同,它占有的不是數據,而是地址。由于動態數據結構的變量是在程序執行過由于動態數據結構的變量是在程序執行過程中動態生成的,所以不能預先予以說明,無程中動態生成的,所以不能預先予以說明,無法預先給這些變量起名字,訪問時也無法通過法預先給這些

2、變量起名字,訪問時也無法通過名字直接輸出或顯示,而只能用指針得到其地名字直接輸出或顯示,而只能用指針得到其地址,然后間接訪問。址,然后間接訪問。 1、定義指針類型、定義指針類型 在在Turbo Pascal中,指針變量用來存放某個存儲單元的地址,中,指針變量用來存放某個存儲單元的地址,即指針變量指向某個存儲單元。一個指針變量僅能指向某一即指針變量指向某個存儲單元。一個指針變量僅能指向某一種類型的存儲單元,這種數據類型是在指針類型的定義中確種類型的存儲單元,這種數據類型是在指針類型的定義中確定的,稱為指針類型的基類型。指針類型定義如下:定的,稱為指針類型的基類型。指針類型定義如下:類型名類型名基

3、類型名;基類型名;例如:例如:type q=integer;var a,b,c:q;說明:說明:q是一指向整型存儲單元的指針類型,其中是一指向整型存儲單元的指針類型,其中“”為指針為指針符。符。a,b,c均定義為指針變量,分別可以指向一個整型存儲均定義為指針變量,分別可以指向一個整型存儲單元。單元。 上例也可用變量說明為:上例也可用變量說明為:var a,b,c:integer;2、動態變量、動態變量應用一個指針指向的動態存儲單元即動態變量的形式應用一個指針指向的動態存儲單元即動態變量的形式如下:指針變量名如下:指針變量名例如:例如:p、q、r以下語句把整數以下語句把整數5存放到存放到p所指向

4、的動態變量所指向的動態變量p中去:中去: p:=5;以下語句把以下語句把p所指向的所指向的p中的值賦給整型變量中的值賦給整型變量i: i:=p;如果指針變量如果指針變量p并未指向任何存儲單元,則可用下列并未指向任何存儲單元,則可用下列賦值語句:賦值語句: p:=nil;其中其中nil是保留字,表示是保留字,表示“空空”,相當于,相當于C語言里面的語言里面的null 3、對動態變量的操作、對動態變量的操作在Turob Pascal程序中,動態變量不能由var直接定義而是通過調用標準過程new建立的。過程形式為:new(指針變量名指針變量名);如果有下列變量定義語句:var p: integer;

5、僅僅說明了p是一個指向整型變量單元的指針變量,但這個整型單元并不存在,在指針變量p中還沒有具體的地址值。在程序中必須通過過程調用語句:new(p);才在內存中分配了一個整型變量單元,并把這個單元的地址放在變量p中,一個指針變量只能存放一個地址。在同一時間內一個指針只能指向一個變量單元。當程序再次執行new(p)時,又在內存中新建立了一個整型變量單元,并把新單元的地址存放在p中,從而丟失了舊的變量單元的地址。為了節省內存空間,對于一些已經不使用的現有動態變量,應該使用標準過程dispose予以釋放。過程形式為:dispose(指針變量名指針變量名);為new(指針變量名)的逆過程,其作用是釋放由

6、指針變量所指向的動態變量的存儲單元。例如在用了new(p)后在調用dispose(p),則指針p所指向的動態變量被撤銷,內存空間還給系統,這時p的值為 nil。 4需要注意之處需要注意之處 1、P與與P的區別的區別P是指向該動態變量的指針變量名,是指向該動態變量的指針變量名,P則稱為動態變則稱為動態變量或標志變量。量或標志變量。P的值是的值是P的首地址,的首地址,P的值為與基類型的值為與基類型相同的一個值。相同的一個值。2、定義后及時分配存儲單元、定義后及時分配存儲單元定義了一個指針變量后,并沒有為該指針分配動態存定義了一個指針變量后,并沒有為該指針分配動態存儲單元,此時的儲單元,此時的P的值無定義,調用的值無定義,調用P則會產生運行錯誤。則會產生運行錯誤。若想使該指針可用,可以對指針賦值,也可以通過若想使該指針可用,可以對指針賦值,也可以通過NEW()()過程分配存儲單元。過程分配存儲單元。3、使用后及時收回存儲單元、使用后及時收回存儲單元指針使用后,不會自動歸還占用的存儲空間,

溫馨提示

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

評論

0/150

提交評論