指標陣列是一種特殊的陣列,指標陣列的陣列元素都是指標變數。指標陣列的定義格式為:
型別名稱 *陣列名稱[陣列長度];
例如:float *pf[3];
因為下標運算子的優先順序高於指標運算子*,上述定義等價於:float * (pf[3]);
說明pf是乙個含有3個元素的陣列,陣列元素為指向float型變數的指標變數。
又如:
int *pn[5]; /*定義乙個5個元素的指標陣列,陣列元素為指向int型變數的指標變數*/
char *pc[10]; /*定義乙個10個元素的指標陣列,元素為指向char型變數的指標變數*/
不論指標陣列是什麼型別,指標陣列的每個陣列元素都用來儲存乙個位址值,在turboc下,每個陣列元素是乙個unsigned int型變數,占用2個位元組。
指標陣列定義後,可以使陣列元素指向乙個變數和其他陣列的首位址。下面是乙個指標陣列定義和引用的例子。
main()
程式執行的結果為:
how are you
說明:(1)程式中c1,c2被定義為字元陣列並初始化;c3是乙個指標變數,指向字串所在字元陣列的首位址。
(2)語句char *parray[3];定義了三個元素的指標陣列parray,陣列元素是指向char型變數或陣列的指標變數。
(3)語句parray[0]=c1;將字元陣列c1的首位址賦給parray[0],指標變數parray[0]指向了c1的首位址。
(4)for迴圈中,語句printf("%s ", parray[i]);依次列印了三個字元陣列的內容。比如,parray[0]裡存放了c1的首位址,printf("%s ", parray[0])和printf("%s ", c1)的作用是相同的。
字元陣列c1,c2,c3和指標陣列parray的記憶體情況如下圖(圖中的陣列首位址值是假設的值)。
指標陣列parray占用了從ffc0開始的6個位元組。char型變數占用1個位元組,因此字元陣列c1,c2,c3均占用4個位元組(包括字串結束符'\0')。parray[0]裡存放了字元陣列c1的首位址ff10,使parray[0]指向c1。parray[1]裡存放了字元陣列c2的首位址ff50,使parray[1]指向c2。parray[2]裡存放了字元陣列c3的首位址ff70,使parray[2]指向c3。
c語言中,允許定義並直接初始化乙個未說明長度的char型指標陣列。初始化時使用大括號,括號裡的字串用逗號隔開。因此,前面的程式也可以寫成:
main()
;for(i=0;i<3;i++)
printf("%s ", parray[i]);
}編譯器自動查到字串的個數,定義parray的長度為3。
程式執行到語句char *parray[3]=;時,系統會自動建立3個字元陣列,並分別將3個字串儲存在裡面;然後將3個字元陣列的首位址分別儲存在parray[0],parray[1],parray[2]中。
指標 陣列和引用
資料型別和指標 首先都是定義乙個變數的資料型別,從右到左判斷 int a a是乙個整數 int a a是乙個指標,指標指向int整數 int a a是乙個指標,指標指向另乙個指標,另乙個指標指向int整數 int a 10 帶有中括號是標識a是乙個陣列,陣列內都是int整數 int a 10 右邊是...
陣列的定義和引用
一 定義陣列 1.定義一維陣列。2.int float,char 等型別對陣列進行的定義 int a 10 float a 10 char a 10 二 一維陣列的引用 1 用for迴圈進行引用。include int main for i 0 i 9 i printf d n a i return...
返回陣列指標和引用
讀萬卷書,行萬里路 木子成 使用原型 型別別名 decltype 尾置方法返回陣列指標和引用 include 返回陣列引用只需將 改為 當為返回陣列引用時 return arr 原型返回陣列指標用法 int fun void 10 int main 型別別名返回陣列指標用法 typedef int ...