回覆列表
  • 1 # 使用者6680448581893

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

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

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

  • 中秋節和大豐收的關聯?
  • 孩子才五歲有鼻炎了,每天流濃鼻涕,怎麼辦?