指向指針的指針變量

指向指針的指針變量

ID:47024993

大小:33.51 KB

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

時(shí)間:2019-06-28

指向指針的指針變量_第1頁(yè)
指向指針的指針變量_第2頁(yè)
指向指針的指針變量_第3頁(yè)
資源描述:

《指向指針的指針變量》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、一個(gè)指針變量可以指向整型變量、實(shí)型變量、字符類型變量,當(dāng)然也可以指向指針類型變量。當(dāng)這種指針變量用于指向指針類型變量時(shí),我們稱之為指向指針的指針變量,這話可能會(huì)感到有些繞口,但你想到一個(gè)指針變量的地址就是指向該變量的指針時(shí);這種雙重指針的含義就容易理解了。下面用一些圖來(lái)描述這種雙重指針,見(jiàn)圖6-13。在圖中,整型變量i的地址是&i,將其傳遞給指針變量p,則p指向i;實(shí)型變量j的地址是&j,將其傳遞給指針變量p,則p指向j;字符型變量ch的地址是&ch,將其傳遞給指針變量p,則p指向ch;整型變量x的地址是&x,將其傳遞給指針變量p2,則p2指向x,p2是指針變量,同時(shí),將p2的地址&

2、p2傳遞給p1,則p1指向p2。這里的p1就是我們談到的指向指針變量的指針變量,即指針的指針。指向指針的指針變量定義如下:類型標(biāo)識(shí)符**指針變量名例如:float**ptr;其含義為定義一個(gè)指針變量ptr,它指向另一個(gè)指針變量(該指針變量又指向一個(gè)實(shí)型變量)。由于指針運(yùn)算符“*”是自右至左結(jié)合,所以上述定義相當(dāng)于:float*(*ptr);下面看一下指向指針變量的指針變量怎樣正確引用。[例6-27]用指向指針的指針變量訪問(wèn)一維和二維數(shù)組。#include#includemain(){inta[10],b[3][4],*p1,*p2,**p3,i,j;/是*p指3向指針的指針變量*/f

3、or(i=0;i<10;i++)scanf("%d",&a[i]);/*一維數(shù)組的輸入*/for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&b[i][j]);/*二維數(shù)組輸入*/for(p1=a,p3=&p1,i=0;i<10;i++)printf("M",*(*p3+i));/*用指向指針的指針變量輸出一維數(shù)組*/printf("");來(lái)源:www.examda.comfor(p1=a;p1-a<10;p1++)/*用指向指針的指針變量輸出一維數(shù)組*/{p3=&p1;printf("M",**p3);}printf("");for(i=

4、0;i<3;i++)/*用指向指針的指針變量輸出二維數(shù)組*/{p2=b[i];p3=&p2;for(j=0;j<4;j++)printf("M",*(*p3+j));printf("");}for(i=0;i<3;i++)/*用指向指針的指針變量輸出二維數(shù)組*/{p2=b[i];for(p2=b[i];p2-b[i]<4;p2++){p3=&p2;printf("M",**p3);}printf("");}}程序的存儲(chǔ)示意如圖6-14所示,對(duì)一維數(shù)組a來(lái)說(shuō),若把數(shù)組的首地址即數(shù)組名賦給指針變量p1,p1就指向數(shù)組a,數(shù)組的各元素用p1表示為,*(p1+i),也可以簡(jiǎn)化為*p1

5、+i表示。同樣,對(duì)二維數(shù)組b來(lái)說(shuō),b[i]表示第i行首地址,將其傳遞給指針變量p2,使其指向該行。該行的元素用p2表示為*(p2+i)。若作p3=&p2,則表示p3指向p2,用p3表示的二維數(shù)組第i行元素為:*(*p3+i)。這與程序中的表示完全相同。運(yùn)行程序:[例6-28]利用指向指針的指針變量對(duì)二維字符數(shù)組的訪問(wèn)。#include#includemain(){inti;staticcharc[][16]={"clanguage","fox","computer","homepage"};/*二維字符數(shù)組*/staticchar*cp[]={c[0],c[1],c[2],c[3]}

6、;指/*針數(shù)組*/staticchar**cpp;/*指向字符指針的指針變量*/cpp=cp;/*將指針數(shù)組的首地址傳遞給指向字符指針的指針變量*/for(i=0;i<4;i++)/*按行輸出字符串*/printf("%s",*cpp++);printf("-----------");for(i=0;i<4;i++)/*按行輸出字符串*/{cpp=&cp[i];printf("%s",*cpp);}}程序中需要注意的是,執(zhí)行cpp=cp是將指針數(shù)組的首地址傳遞給雙重指針,所以*(cpp+i)表示第i行的首地址,而不是cpp+i。在程序設(shè)計(jì)時(shí)一定分清。

當(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. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(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)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。