指向指針指針

指向指針指針

ID:20473676

大?。?9.50 KB

頁數(shù):6頁

時間:2018-10-13

指向指針指針_第1頁
指向指針指針_第2頁
指向指針指針_第3頁
指向指針指針_第4頁
指向指針指針_第5頁
資源描述:

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

1、10.7指針數(shù)組和指向指針的指針10.7.1指針數(shù)組的概念一個數(shù)組的元素值全為指針則是指針數(shù)組。指針數(shù)組是一組有序的指針的集合。指針數(shù)組的所有元素都必須是具有相同存儲類型和指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組說明的一般形式為:類型說明符*數(shù)組名[數(shù)組長度]其中類型說明符為指針值所指向的變量的類型。例如:int*pa[3]表示pa是一個指針數(shù)組,它有三個數(shù)組元素,每個元素值都是一個指針,指向整型變量。【例10.33】通??捎靡粋€指針數(shù)組來指向一個二維數(shù)組。指針數(shù)組中的每個元素被賦予二維數(shù)組每一行的首地址,因此也可理解為指向

2、一個一維數(shù)組。main(){inta[3][3]={1,2,3,4,5,6,7,8,9};int*pa[3]={a[0],a[1],a[2]};int*p=a[0];inti;for(i=0;i<3;i++)printf("%d,%d,%d",a[i][2-i],*a[i],*(*(a+i)+i));for(i=0;i<3;i++)printf("%d,%d,%d",*pa[i],p[i],*(p+i));}本例程序中,pa是一個指針數(shù)組,三個元素分別指向二維數(shù)組a的各行。然后用循環(huán)語句輸出指定的數(shù)組元素。其中*

3、a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p與a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值。讀者可仔細領(lǐng)會元素值的各種不同的表示方法。應(yīng)該注意指針數(shù)組和二維數(shù)組指針變量的區(qū)別。這兩者雖然都可用來表示二維數(shù)組,但是其表示方法和意義是不同的。二維數(shù)組指針變量是單個的變量,其一般形式中"(*指針變量名)"兩邊的括號不可少。而指針數(shù)組類型表示的是多個指針(一組有序指針)在一般形式中"*指針數(shù)組名"兩邊不能有括號。例如:int(*p)[3]

4、;表示一個指向二維數(shù)組的指針變量。該二維數(shù)組的列數(shù)為3或分解為一維數(shù)組的長度為3。int*p[3]表示p是一個指針數(shù)組,有三個下標變量p[0],p[1],p[2]均為指針變量。指針數(shù)組也常用來表示一組字符串,這時指針數(shù)組的每個元素被賦予一個字符串的首地址。指向字符串的指針數(shù)組的初始化更為簡單。例如在例10.32中即采用指針數(shù)組來表示一組字符串。其初始化賦值為:char*name[]={"Illagalday","Monday","Tuesday","Wednesday","Thursday","Friday","Satu

5、rday","Sunday"};完成這個初始化賦值之后,name[0]即指向字符串"Illegalday",name[1]指向"Monday"......。指針數(shù)組也可以用作函數(shù)參數(shù)?!纠?0.34】指針數(shù)組作指針型函數(shù)的參數(shù)。在本例主函數(shù)中,定義了一個指針數(shù)組name,并對name作了初始化賦值。其每個元素都指向一個字符串。然后又以name作為實參調(diào)用指針型函數(shù)day_name,在調(diào)用時把數(shù)組名name賦予形參變量name,輸入的整數(shù)i作為第二個實參賦予形參n。在day_name函數(shù)中定義了兩個指針變量pp1和pp2,

6、pp1被賦予name[0]的值(即*name),pp2被賦予name[n]的值即*(name+n)。由條件表達式?jīng)Q定返回pp1或pp2指針給主函數(shù)中的指針變量ps。最后輸出i和ps的值。main(){staticchar*name[]={"Illegalday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};char*ps;inti;char*day_name(char*name[],intn);printf("inputD

7、ayNo:");scanf("%d",&i);if(i<0)exit(1);ps=day_name(name,i);printf("DayNo:%2d-->%s",i,ps);}char*day_name(char*name[],intn){char*pp1,*pp2;pp1=*name;pp2=*(name+n);return((n<1

8、

9、n>7)?pp1:pp2);}【例10.35】輸入5個國名并按字母順序排列后輸出?,F(xiàn)編程如下:#include"string.h"main(){voidsort(char*n

10、ame[],intn);voidprint(char*name[],intn);staticchar*name[]={"CHINA","AMERICA","AUSTRALIA","FRANCE","GERMAN"};intn=5;sort(name,n);print(name,n);}voidsort(char*na

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

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

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