指標陣列的定義和引用

2021-06-22 11:58:32 字數 1415 閱讀 1987

指標陣列是一種特殊的陣列,指標陣列的陣列元素都是指標變數。指標陣列的定義格式為:

型別名稱 *陣列名稱[陣列長度];

例如: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 ...