2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第8章地址和指針指針是C語言中的一個重要概念,也是C語言的一個重要特色。正確而靈活地運用它,可以有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu);能動態(tài)分配內(nèi)存;能方便地使用字符串;有效而方便地使用數(shù)組;在調(diào)用函數(shù)時能得到多于一個的返回值;能直接處理內(nèi)存地址等,這對設(shè)計系統(tǒng)軟件是很必要的。掌握指針的應(yīng)用,可以使程序簡潔、緊湊、高效。8.1變量的地址和指針計算機的內(nèi)存是以字節(jié)為單位的一片連續(xù)的存儲空間,我們稱其為一個存儲單元。每個存儲單元都有唯一的編號,我們稱為

2、內(nèi)存地址(一般用20位二進制數(shù)表示,為書寫方便,更多的是用16進制數(shù)表示。為的直觀性,我們在討論中用10進制數(shù)表示)。由于內(nèi)在是連續(xù)的,所以地址也是連續(xù)的。在程序中,一個變量實質(zhì)上代表了“內(nèi)存中的某個存儲單元”(當(dāng)某種類型的變量占用多個字節(jié)的內(nèi)存時,規(guī)定用最小的地址來表示)。若在程序中定義了一個變量,C編譯系統(tǒng)會根據(jù)定義的變量類型,為其分配若干個字節(jié)的存儲空間。在VC6.0中,shtint型數(shù)據(jù)占2字節(jié);int型數(shù)據(jù)和float型數(shù)據(jù)占

3、4個字節(jié);double型數(shù)據(jù)占8個字節(jié);型數(shù)據(jù)占1個字節(jié);指針型變量占4個字節(jié)。一般情況下,我們在程序中只需要指出變量名,無需知道每個變量在內(nèi)存中的具體地址,每個變量與其對應(yīng)的內(nèi)存單元之間的聯(lián)系由C編譯系統(tǒng)來完成。我們在程序中對變量的存取操作,實際上是對與變量對應(yīng)的內(nèi)存單元的操作,這種直接按變量地址存取變量值的方式稱為變量的“直接存取方式”。如下圖所示。在C語言中,還可以定義一種特殊的變量,這種變量不是簡單地存儲一個數(shù)值或字符,而是存放

4、某個內(nèi)存單元的內(nèi)存地址。這種變量我們稱為“指針變量”,它占用4個字節(jié)(兩個字節(jié)用來存放段地址,兩個字節(jié)用來存放段內(nèi)偏移地址)。指針變量當(dāng)然也有它自己的內(nèi)存地址。如下圖所示,我們定義一個指針型變量p,它自己的地址是(2002),若將變量a的內(nèi)存地址(1002)存放到變量p中。這時要訪問變量a所代表的存儲單元,就有兩種方法,一種是我們剛才講的“直接存取方式”,另外一種就是我們先找到變量p的地址(2002),從中取出a的地址(1002),然后

5、再去訪問以1002為首地址的存儲單元。這種通過變量p間接得到變量a的地址,然后再存取變量a的值的方式稱為“間接存取方式”。這種用來存放地址的變量稱為“指針變量”。在這種情況下,通常稱指針變量p指向了變量a,變量a是指針變量p所指的對象,它們之間的這種“指向”關(guān)系是通過地址建立的。intaintbfloatc101210131014101510201021102210231002p200210022002pa10021003除了給指針變量

6、賦地址值外,還可以為指針變量賦NULL值。例如:pi=NULL;NULL是在stdio.h頭文件中定義的預(yù)定義符,因此在使用NULL時,應(yīng)該在程序的前面出現(xiàn)預(yù)定義行:#include。NULL的代碼為0,當(dāng)執(zhí)行以上的賦值語句后,稱pi為空指針。因為NULL的代碼為0,所以,以上語句等價于pi=’0’或p=0這時,指針p并不是指向地址為0的存儲單元,它不指向任何地方。而是具有一個確定的值——“空”,任何類型的指針都可賦予該值。企圖通過一個

7、空指針去訪問一個存儲單元時,將會得到一個出錯信息。8.4對指針變量的操作8.4.1通過指針來引用一存儲單元C語言提供了一個稱作“間接訪問運算符”(也稱為間址運算符)的單目運算符“”。當(dāng)一個指針變量中存放了一個確切的地址時,就可以通過間址運算符“”來訪問該地址的存儲單元。例如:a是一個變量,intpi=NULLpj=pi=pjprintf(“%d%dn“ij)printf(“%d%dn“pipj)printf(“%d%dn“pipj)再如

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論