指標的程式設計藝術(第二版)
陣列指標(pointers of array)表示陣列的元素,都是指向某個資料型別的指標,如
char *parr[4] = ;
由於[ ]運算子的優先順序高於*運算子,因此,parr是4個元素組成的陣列,陣列中的每個元素都是指向char資料型別的指標。如果將上述的定義用圖形來表示的話,則可以很快得到答案。
這條語句的陣列名為parr,表示第乙個元素parr[0] 的位址,而且是乙個指標常量,所以*parr是parr[0],而parr[0]是「department」字串中d字元的位址。
parr可視為二維陣列(因為指標(*)和陣列()是互通的),我們可以使用下列3種方法:
1.兩個,如*parr;
2.乙個,搭配乙個[ ],如parr[0];
3.兩個[ ],如parr0。
來輸出department字串中的d字元。除了上述3種方法外,其餘的表示法將得到位址。請參閱範例pointerofarray-5。
範例pointerofarray-5
/* pointerofarray-5.c */
#include #include int main()
; printf("*parr[3] = %c\n", *parr[3]);
printf("**(parr+3) = %c\n", **(parr+3));
printf("parr[3][0] = %c\n", parr[3][0]);
printf("parr[2] = %s\n", parr[2]);
printf("*(parr+2) = %s\n", *(parr+2));
system("pause");
return 0;
}
輸出結果
從程式可知,要輸出某個字串的字元,可以使用parr[3]、
(parr+3)、parr3 這3種方法,並以%c作為其格式(因為parr的每個元素都是指向char的指標),而輸出字串只需要知道字串的第乙個字元的位址就可以,並以%s格式輸出,如parr[2]和(parr+2)都是指向某乙個字元的位址。
繼續上面的例子,如果想輸出某字串中的子字串,如「department」字串中的「ment」,則可使用下列語句之一來輸出:
1.printf(「%s」, parr[0]+6);
2.printf(「%s」, *parr+6);
《指標的程式設計藝術(第二版)》一1 5 練習
指標的程式設計藝術 第二版 1 以下是linda所撰寫的程式,請你幫她debug一下。addressbugs5.c include include int main 2 以下是jennifer所寫的程式,請你幫她debug一下。addressarraybugs5.c include include ...
《指標的程式設計藝術(第二版)》一1 4 結構
指標的程式設計藝術 第二版 談完了陣列後,接著討論結構。結構是由多個不同資料型別所組成的乙個集合體。我們以範例addressstruct來加以說明。範例addressstruct addressstruct.c include include int main 定義結構變數,並設定其初值 struc...
C程式語言(第二版)3 3
3 3 編寫函式expand s1,s2 將字串s1中類似與a z一類的速記符號在字串s2中擴充套件成等價的完整列表abc.xyz。該函式可以處理大小寫字母和數字,並可以處理a b c a z0 9與 a z等類似的情況 include includevoid expand char result,...