《C語(yǔ)言程序設(shè)計(jì)案例教程》課件教學(xué)設(shè)7.6指向指針的指針_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)案例教程》課件教學(xué)設(shè)7.6指向指針的指針_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)案例教程》課件教學(xué)設(shè)7.6指向指針的指針_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)案例教程》課件教學(xué)設(shè)7.6指向指針的指針_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)案例教程》課件教學(xué)設(shè)7.6指向指針的指針_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

指向指針的指針CONTENTS

目錄提出問題引入新課自主學(xué)習(xí)明確考點(diǎn)案例分析交流提升仿真演練體驗(yàn)探索提出問題引入新課PART011、間接訪問與直接訪問2、如果一個(gè)指針變量中包含另一個(gè)指針變量時(shí),將通過什么方式訪問指針變量所指元素?提出問題引入新課自主學(xué)習(xí)明確考點(diǎn)PART02“指向指針的指針變量”存放的是指針變量的地址,則為“二級(jí)指針”甚至“多級(jí)指針”。二級(jí)指針變量的定義格式是:

<類型標(biāo)識(shí)符>**<二級(jí)指針變量>;考點(diǎn)一、二級(jí)指針變量的定義:定義后需要把另一個(gè)指針變量的地址賦值給二級(jí)指針變量,格式是:

<二級(jí)指針變量>=&<一級(jí)指針變量>;考點(diǎn)二、二級(jí)指針變量的賦值inta=10,*p1,**p2;p1=&a;p2=&p1;通過指針訪問變量稱為間接訪問。由于指針變量直接指向變量,所以稱為“單級(jí)間址”。而如果通過指向指針的指針變量來(lái)訪問變量則構(gòu)成“二級(jí)間址”。設(shè)置指向指針的二級(jí)指針變量的目的最終還是要對(duì)一級(jí)指針變量指向的數(shù)據(jù)變量(比如變量a)進(jìn)行操作,因此要用二級(jí)指針引用數(shù)據(jù)變量,形式是: **<二級(jí)指針變量名>從下圖可以看到,name是一個(gè)指針數(shù)組,它的每一個(gè)元素是指針型數(shù)據(jù),每一個(gè)元素都有相應(yīng)的地址。數(shù)組名name代表該指針數(shù)組的首地址。name+i是mane[i]的地址。name+i就是指向指針型數(shù)據(jù)的指針(地址)。還可以設(shè)置一個(gè)指針變量p,使它指向指針數(shù)組元素。P就是指向指針型數(shù)據(jù)的指針變量??键c(diǎn)二、二級(jí)指針變量的賦值考點(diǎn)二、二級(jí)指針變量的賦值二級(jí)指針變量的作用:首先任何值都有地址,一級(jí)指針的值是地址,但這個(gè)地址亦需要空間來(lái)存放,是空間就具有地址,也就是存放地址值的空間地址,二級(jí)指針就是為了獲取這個(gè)地址。

如果有:p=name+2;printf(“%o\n”,*p);printf(“%s\n”,*p);則,第一個(gè)printf函數(shù)語(yǔ)句輸出name[2]的值(它是一個(gè)地址),第二個(gè)printf函數(shù)語(yǔ)句以字符串形式(%s)輸出字符串“GreatWall”。考點(diǎn)二、二級(jí)指針變量的賦值【例1】使用指向指針的指針。

main(){char*name[]={"Followme","BASIC","GreatWall","FORTRAN","Computerdesighn"};char**p;inti;for(i=0;i<5;i++){p=name+i;printf("%s\n",*p);}}考點(diǎn)二、二級(jí)指針變量的賦值【例2】利用二級(jí)指針對(duì)n個(gè)字符串排序并輸出#include<stdio.h>#defineN4main(){chars[N][10]={"BASIC","FORTRAN","Pascal","C"};char*p[N],**pp,*temp;inti,j,k;for(i=0;i<N;i++)p[i]=s[i];pp=p;for(i=0;i<N;i++){k=i;for(j=i+1;j<N;j++)if(strcmp(pp[k],pp[j])>0)k=j;if(k!=i){temp=pp[k];pp[k]=pp[i];pp[i]=temp;}}for(i=0;i<N;i++)printf("%s\n",pp[i]);}考點(diǎn)二、二級(jí)指針變量的賦值【例3】二級(jí)指針與二維數(shù)組#include<stdio.h>main(){inta[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};int*p[4],**pp;inti,j;p[0]=a[0];p[1]=a[1];p[2]=a[2];p[3]=a[3];pp=p;for(i=0;i<4;i++){for(j=0;j<3;j++)printf("%5d",*(*(pp+i)+j));printf("\n");}}案例分析交流提升PART03【例1】設(shè)有定義:intn=0,*p=&n,**q=&p;則以下選項(xiàng)中,正確的賦值語(yǔ)句是()A)p=1;

B)*q=2;

C)q=p;

D)*p=5;【解析】在C語(yǔ)言中,指針變量只能存放地址(指針),將一個(gè)整型數(shù)據(jù)(或任何其他非地址類型的數(shù)據(jù))賦給一個(gè)指針變量的賦值是不合法的;指針中“*”為指針運(yùn)算符(或稱“間接訪問”運(yùn)算符),如本題中,*p為指針變量p所指向的存儲(chǔ)單元內(nèi)的整型值,p是指針,q是指向指針的指針,因此選項(xiàng)A,B,C都是錯(cuò)誤的,只有選項(xiàng)D是正確的。誤區(qū)警示:指向指針的指針,即二級(jí)指針的基類型是一個(gè)指針變量。本題中,若想引用變量n的值應(yīng)該用“*p”或“**q”。選項(xiàng)D中的賦值語(yǔ)句等價(jià)于“n=5;或**q=5;”。【例2】若有定義和語(yǔ)句()main(){inta=5,*b,**c;c=&b;b=&a;…………}程序在執(zhí)行了“c=&b;b=&a;”語(yǔ)句后,表達(dá)式:**c的值是()A)變量a的地址B)變量b的值C)變量a中的值D)變量b的地址【解析】在本題程序中,根據(jù)“c=&b;b=&a;”可知:c指向b,*c代表存儲(chǔ)單元,b指向a,*b代表存儲(chǔ)單元,也就是說(shuō)**c代表存儲(chǔ)單元a?!纠?】有以下程序運(yùn)行后的輸出結(jié)果是()#include<stdio.h>main(){int**q,*p,a=10,b=20;q=&p;p=&a;p=&b;printf("c=%d,d=%d\n",*p,**q);}A)10,20B)10,10C)20,10D)20,20【解析】在本題程序中,q是指向指針的指針變量,p是指向整型的指針變量。&為求地址運(yùn)算符。語(yǔ)句“q=&p;”執(zhí)行后,將p的地址賦值給指向指針的指針變量q。語(yǔ)句“p=&a;”則將變量a的地址賦值給p,p指向a的存儲(chǔ)地址,而*p為p指向地址存儲(chǔ)的值,由此可知*p和a的值都是10,。同理,“p=&b;”執(zhí)行后*p的值為20。在第一個(gè)語(yǔ)句中,已經(jīng)將p的地址賦值給q,因此p和*q的值相同(都是地址&pp中存儲(chǔ)的值),由此推出*p和*q的值相同,都為20。仿真演練,體驗(yàn)探索PART041、以下程序的運(yùn)行結(jié)果是()#include<stdio.h>main(){char*name[5]={"Followme","BASIC","GreatWall","FORTRAN","Computer"};char**p=name;inti;for(i=0;i<5;i++)printf("%s\n",*p++);}2、以下程序的運(yùn)行結(jié)果是()main(){inta[5]={2,4,6,8,10},*p,**k;p=a;k=&p;printf("%d",*p++));printf("%d\n",**k);}3、有以下程序段main(){inta=5,*b,**c;c=&b;b=&a;……}程序在執(zhí)行了c=&b:b=&a;語(yǔ)句后,表達(dá)式:**c的值是()。A)變量a的地址

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論