《C語(yǔ)言程序設(shè)計(jì)》第5章指針

《C語(yǔ)言程序設(shè)計(jì)》第5章指針

ID:45447694

大?。?.98 MB

頁(yè)數(shù):45頁(yè)

時(shí)間:2019-11-13

《C語(yǔ)言程序設(shè)計(jì)》第5章指針_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》第5章指針_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》第5章指針_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》第5章指針_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》第5章指針_第5頁(yè)
資源描述:

《《C語(yǔ)言程序設(shè)計(jì)》第5章指針》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、第五章指針Pointer5.1指針的基本概念指針是C語(yǔ)言的重要特征,是C語(yǔ)言訪(fǎng)問(wèn)內(nèi)存數(shù)據(jù)和程序的靈活和有效的手段。C語(yǔ)言的指針支持:⑴函數(shù)的地址調(diào)用;⑵動(dòng)態(tài)分配內(nèi)存;⑶數(shù)組的地址引用。⒈內(nèi)存、地址、指針(Memory,Address,Pointer)內(nèi)存存放了計(jì)算機(jī)正在運(yùn)行的程序和程序正在使用的數(shù)據(jù)。內(nèi)存的基本單元是字節(jié)(Byte)。為了訪(fǎng)問(wèn)內(nèi)存單元,CPU給每個(gè)內(nèi)存單元一個(gè)編號(hào),該編號(hào)稱(chēng)為該內(nèi)存單元的地址。變量是程序中可以改變的量,當(dāng)說(shuō)明變量時(shí),系統(tǒng)將為其在內(nèi)存中開(kāi)辟相應(yīng)得內(nèi)存單元。由此確定變量的地址及內(nèi)存中的表示方式。2000H2001H2002H2003H

2、inta=0;a的內(nèi)存單元a的地址&a如果有一變量p,其內(nèi)容存放了a的地址&a,通過(guò)p也可實(shí)現(xiàn)對(duì)a的訪(fǎng)問(wèn),p稱(chēng)為指針,并指向a。00H20H00p⒉指針的說(shuō)明指針是特殊類(lèi)型的變量,其內(nèi)容是變量的地址。在使用前必須說(shuō)明,說(shuō)明某標(biāo)識(shí)符是指針類(lèi)型,并可指向某種類(lèi)型的對(duì)象。指針的說(shuō)明格式:type*pname1,…*pnamen;標(biāo)識(shí)符命名的指針變量名。指針標(biāo)志。指針指向?qū)ο蟮念?lèi)型。int*p,*q;/*p、q是指向整型變量的指針。*/float*pfValue,*pf;/*pfValue和pf是指向浮點(diǎn)型的指針。*/⒊指針對(duì)變量的引用定義指針的目的是通過(guò)指針引用內(nèi)存對(duì)

3、象,指針的引用應(yīng)按如下步驟進(jìn)行:⑴說(shuō)明指針inta=0,*p;⑵指針指向?qū)ο髉=&a;⑶通過(guò)指針引用對(duì)象*p=*p+2;4.指針操作的兩種運(yùn)算符:取地址運(yùn)算&&a表示取變量a地址的運(yùn)算。間接運(yùn)算**p表示取指針p指向變量?jī)?nèi)容的運(yùn)算。inta,*p;2000Happ=&a;/*p指向a。*/2000H*p=2;2舉例:#includevoidmain(void){intx,*p;x=55;p=&x;printf(“%d,%u”,x,*p);*p=65;printf(“%d,%u”,x,*p);}2000Hxp2000H5565關(guān)于指針的說(shuō)明:⑴指

4、針必須指向?qū)ο蠛?,才能引用。int*p;*p=2;/*Error!*/⑵&和*為互補(bǔ)運(yùn)算。inta,*p;p=&a;則:&*p?p*&a?a【例5-1】/*example5-1指針訪(fǎng)問(wèn)簡(jiǎn)單變量示例*/#includevoidmain(void){inta,b,*p1,*p2;p1=&a;/*p1指向a*/p2=&b;/*p2指向b*/scanf("%d%d",p1,&b);printf("a+b=%d",*p1+*p2);}5。指針的運(yùn)算指針是特殊類(lèi)型的變量,其內(nèi)容是變量的地址,因此指針的運(yùn)算及結(jié)果一定要符合地址邏輯。⑴五種算術(shù)運(yùn)算inta

5、,b,*p1,*p2;p1=&a;p2=&b;a2000Hb2400Hp1p22000H2400Hp1++;/*含義指向a后的整型單元*/2002H2002Hp1--;/*指向a前的整型單元*/p1+n;/*指向a后的第n個(gè)整型單元*/p1-n;/*指向a前的第n個(gè)整型單元*/p2-p1;/*a和b之間差的單元數(shù)*/結(jié)果200Hp±n相當(dāng)于:p的實(shí)際內(nèi)容±n?sizeof(*p);⑵六種關(guān)系運(yùn)算比較兩個(gè)同類(lèi)型變量之間的地址關(guān)系。p1>p2;指針賦值運(yùn)算#includevoidmain(void){inta,b,*p1,*p2;a=2;b=3;p

6、1=&a;p2=&b;*p1=*p2;printf(“%d,%d”,a,b);a=3;b=5;p1=p2;printf(“%d,%d”,*p1,*p2);}差別a&a2000Hb&b2400Hp1p2232000H2400H5.2指針與數(shù)值型數(shù)組數(shù)組是同類(lèi)型的變量的集合,各元素按下標(biāo)的特定順序占據(jù)一段連續(xù)的內(nèi)存,各元素的地址也連續(xù),指針對(duì)數(shù)組元素非常方便。⒈指針與一維數(shù)組通過(guò)指針引用數(shù)組元素可以分以下三個(gè)步驟:⑴說(shuō)明指針和數(shù)組int*p,a[10];⑵指針指向數(shù)組p=a;/*指向數(shù)組的首地址*/p=&a[0];/*指向數(shù)組的首地址*/⑶通過(guò)指針引用數(shù)組元素當(dāng)

7、指針指向數(shù)組的首地址時(shí),則下標(biāo)為i的元素地址為:p+i或a+i引用數(shù)組元素可以有三種方法:下標(biāo)法:a[i]指針?lè)ǎ?(p+i)數(shù)組名法:*(a+i)注意:數(shù)組名是地址常量,不能改變!a=p;/*Error!*//*example5-2通過(guò)指針訪(fǎng)問(wèn)數(shù)組元素*/#includevoidmain(void){doubledArray[10],dAvge,*dPointer;inti;dAvge=0;dPointer=dArray;/*指針指向數(shù)組*/for(i=0;i<10;i++){scanf("%lf",dPointer+i);/*dPointe

8、r+i為下標(biāo)為i的元素地

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。