乙個陣列的元素值為指標則是指標陣列。 指標陣列是一組有序的指標的集合。
一般形式
資料型別 * 陣列名[陣列長度]
例如
/*
* 程式功能: 指標陣列
* 程式版本: v0.1.00
q是乙個指標陣列, 三個元素分別指向二維陣列a的各行。 然後用for迴圈輸出制定的陣列元素。
指標陣列可以作為函式的參量使用,使用方式與普通陣列類似。
指標陣列常適用於指向若干字串,這樣使字串處理更加靈活方便。
#include int main(void)
; int (*p)[2] = (int (*)[2])a;
/*等號左邊:宣告並定義指標p為陣列指標,指向的陣列長度為2;
轉換為和p一樣的型別;
**/printf("%d\n", **(p+1)); /*
輸出結果是:3 (p+1指向的的2元素陣列為p指向2元素陣列的下 乙個陣列,*(p+1)是p+1指向的陣列的首位址內存放的內容)
**/return 0;
} /*
*/
#include int main(void)
; int (*p)[2] = (int (*)[2])&a; //a是陣列首位址。 &a是指向陣列的指標
printf("%d\n", **p); //輸出結果是:1
printf("%d\n", *(*p+1)); //輸出結果是:2
printf("%d\n", **(p+1)); //輸出結果是:3
printf("%d\n", *a); //輸出結果是:1
printf("%d\n", *(a+1)); //輸出結果是:2
printf("%d\n", *(a+9)); //輸出結果是:10
printf("%p\n", *(a+10)); //輸出結果是:0012ff14
printf("%d\n", *(&a)); //輸出結果是:1244948
printf("%d\n", *(&a+1)); //輸出結果是:1244988,&a+1是下乙個10元素的int型別陣列, *(&a+1)是下乙個10元素int陣列的位址,可以看到它比*(&a)大了40個位元組=int的4個位元組*10個int
printf("%p\n", *(&a+1)); //輸出結果是:0012ff3c 是 1244988的16進製表示
return 0; }/*
*/
以上兩個程式是看了別人的部落格"偷"來的, ↓面是鏈結, 有點懶了 熬夜成癮(,,•﹏•,,)
陣列指標是指向陣列位址的指標,其本質為指標;
指標陣列是陣列元素為指標的陣列(例如 int *p[3],定義了p[0],p[1],p[2]三個指標),其本質為陣列。
陣列指標的使用在某些情況下與指標陣列很相似,要注意區別。
C語言奇妙之旅 指標函式
指標函式是指帶指標的函式,即本質是乙個函式,函式返回型別是某一型別的指標。例子 程式功能 指標函式 程式版本 v0.1.00 include int f int i,int j 定義了乙個指標函式 函式指標是指向函式的指標變數,即本質是乙個指標變數。例子 include void function ...
C語言奇妙之旅 結構體陣列
定義乙個結構體陣列的方式與定義結構體變數的方法相同,只是把結構體變數替換成陣列。定義結構體陣列的一般形式 struct 結構體名 成員列表 陣列名 struct student char a int a 3 student 5 直接定義結構體陣列 struct char a int a 3 stud...
C語言奇妙之旅 for巢狀if
例子 求 1 10 能被2整數的數 程式功能 列印 0 到 10 程式版本 v2.33 include int main printf 我 d能被2整除 i if和for預設能控制一條語句,不過為了 規範盡量加上大括號,這也看得出我 不夠規範,d要對應乙個變數在字串後面,也就是格式字元都要在字串後面...