資源描述:
《指針數(shù)組和指向指針的指針.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、§10.3指針數(shù)組和指向指針的指針10.3.1指針數(shù)組指針數(shù)組數(shù)組的每個元素均存放地址,即每個元素是一個指針變量格式類型標(biāo)識符*數(shù)組名[數(shù)組長度]例如int*p[4];定義了p是數(shù)組,有4個元素,每個元素均為整型指針變量操作指針數(shù)組的元素使用同單個指針變量。1例10-9指針數(shù)組示例main(){inti=1,j=2,k=3,m=4;int*p[4],n;p[0]=&i;p[1]=&j;p[2]=&k;p[3]=&m;for(n=0;n<4;n++)printf("%d",*p[n]);for(n=0;n<4;n++)printf("%x",p[
2、n]);}1234&i&j&k&mijkmpp[0]p[1]p[2]p[3]輸出1234i、j、k、m的地址2例10-10寫出下列程序的運行結(jié)果voidmain(){inti=1,j=2,k=3,m=4,n,t;int*p[4],*pt;p[0]=&i;p[1]=&j;p[2]=&k;p[3]=&m;pt=p[0];p[0]=p[3];p[3]=pt;for(n=0;n<4;n++)printf("%d",*p[n]);printf("");p[0]=&i;p[1]=&j;p[2]=&k;p[3]=&m;t=*p[0];*p[0]=*p[3
3、];*p[3]=t;for(n=0;n<4;n++)printf("%d",*p[n]);printf("");}運行結(jié)果如下:423142311234&i&k&j&mijkmpp[0]p[1]p[2]p[3]1234&m&k&j&iijkmpp[0]p[1]p[2]p[3]輸出:4231輸出:42311234&m&k&j&iijkmpp[0]p[1]p[2]p[3]310.3.2指向指針的指針變量指向指針的指針變量一個指針變量指向另一個指針變量如設(shè)i為整型變量,p為指針變量,pp為指向指針的指針變量a=10;p=&a;pp=&p;則ppp
4、&aa10指向指針的指針變量的定義格式類型標(biāo)識符**指針變量名;如int**pp;char**gg;使用時有三種形式pp,*pp,**pppp表示指向指針的指針變量的地址值如&p*pp表示指向指針變量的地址值如&a**pp表示指向指針變量所指單元的值如10&p4例10-11寫出運行結(jié)果#includevoidmain(){inta,*p,**pp;p=&a;pp=&p;a=10;printf("a=%d,*p=%d,**pp=%d",a,*p,**pp);**p=20;printf("a=%d,*p=%d,**pp=%d
5、n",a,*p,**pp);**pp=30;printf("a=%d,*p=%d,**pp=%d",a,*p,**pp);}運算輸出a=10,*p=10,**pp=10ppp&aa&p*pp**ppa=20,*p=20,**pp=20a=30,*p=30,**pp=305例10-12對如下變量定義和初始化,依次執(zhí)行操作(1)~(3)后,請分析部分變量的值。inta=10,b=20,t;int*pa=&a,*pb=&b,*pt;int**ppa=&pa,**ppb=&pb,**ppt;操作(1):ppt=ppb;ppb=ppa;ppa=ppt
6、;ppbpb&bb20&pbppapa&aa10&pa**ppa**ppb*pa*pbab102010201020ppbpb&bb20&pbppapa&aa10&pa**ppa**ppb*pa*pbab201010201020ppbpb&bb20&pa&a10&pbppapaa6再操作(2):pt=pb;pb=pa;pa=pt;ppbpb&bb20&pappapa&aa10&pb**ppa**ppb*pa*pbab102020101020再操作(3):t=b;b=a;a=t;**ppa**ppb*pa*pbab201010202010ppbpb
7、&ab20&pappapa&ba10&pbppbpb&ab20&pappapa&ba10&pbppbpb&ab10&pappapa&ba20&pb7間接訪問利用指針變量訪問另一個變量利用指針變量訪問一個變量值,稱為間接訪問,叫單級間址利用指向指針的指針變量訪問一個變量值稱為間接的間接訪問,叫二級間址。依次類推可以延伸更多的多級間址。指針變量地址變量變量值單級間址指針變量地址2變量變量值二級間址指向指針的指針地址1指針變量地址3變量變量值三級間址指向指針的指針地址2指向指針的指針的指針地址18例main(){inti,*q,**p,***s;i=
8、10;q=&i;p=&q;s=&p;printf("s=%o",s);printf("*s=%o",*s);printf("**s=%o"