指標陣列是一種特殊的陣列,指標陣列的陣列元素都是指標變數。指標陣列的定義格式為:
型別名稱 *陣列名稱[陣列長度];
例如:float *pf[3];
因為下標運算子[]的優先順序高於指標運算子*,上述定義等價於:float * (pf[3]);
說明pf是一個含有3個元素的陣列,陣列元素為指向float型變數的指標變數。
又如:
int *pn[5]; /*定義一個5個元素的指標陣列,陣列元素為指向int型變數的指標變數*/
char *pc[10]; /*定義一個10個元素的指標陣列,元素為指向char型變數的指標變數*/
不論指標陣列是什麼型別,指標陣列的每個陣列元素都用來儲存一個地址值,在TurboC下,每個陣列元素是一個unsigned int型變數,佔用2個位元組。
指標陣列定義後,可以使陣列元素指向一個變數和其他陣列的首地址。下面是一個指標陣列定義和引用的例子。
main()
{
int i;
char c1[]="How";
char c2[]="are";
char *c3="you";
char *pArray[3];
pArray[0]=c1;
pArray[1]=c2;
pArray[2]=c3;
for(i=0;i
printf("%s ", pArray[i]);
}
程式執行的結果為:
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。
指標陣列是一種特殊的陣列,指標陣列的陣列元素都是指標變數。指標陣列的定義格式為:
型別名稱 *陣列名稱[陣列長度];
例如:float *pf[3];
因為下標運算子[]的優先順序高於指標運算子*,上述定義等價於:float * (pf[3]);
說明pf是一個含有3個元素的陣列,陣列元素為指向float型變數的指標變數。
又如:
int *pn[5]; /*定義一個5個元素的指標陣列,陣列元素為指向int型變數的指標變數*/
char *pc[10]; /*定義一個10個元素的指標陣列,元素為指向char型變數的指標變數*/
不論指標陣列是什麼型別,指標陣列的每個陣列元素都用來儲存一個地址值,在TurboC下,每個陣列元素是一個unsigned int型變數,佔用2個位元組。
指標陣列定義後,可以使陣列元素指向一個變數和其他陣列的首地址。下面是一個指標陣列定義和引用的例子。
main()
{
int i;
char c1[]="How";
char c2[]="are";
char *c3="you";
char *pArray[3];
pArray[0]=c1;
pArray[1]=c2;
pArray[2]=c3;
for(i=0;i
printf("%s ", pArray[i]);
}
程式執行的結果為:
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。