回覆列表
  • 1 # 使用者3302543726227838

    1、指標:系統為某一個變數開闢單元格,指標便指向此單元格的變數值。

    2、陣列:系統為某一組數開闢一組單元格,陣列首地址便是你定義的陣列變數名。

    陣列和指標的唯一區別是,不能改變陣列名稱指向的地址。

    對於陣列來說,陣列的首地址,也可以用指標來表示操作,如:

    int a[10];

    int *p,n;

    p = a;

    對第一個元素取值,可以用幾種方法:

    n =a[0];

    n = *p;

    n = p[0];

    n = *(p+0) ;

    但是以下語句則是非法的:

    readings = totals; // 非法!不能改變 readings totals = dptr; // 非法!不能改變 totals

    陣列名稱是指標常量。不能讓它們指向除了它們所代表的陣列之外的任何東西。

    擴充套件資料

    下面的程式定義了一個 double 陣列和一個 double 指標,該指標分配了陣列的起始地址。隨後,不僅指標符號可以與陣列名稱一起使用,而且下標符號也可以與指標一起使用。

    int main()

    {

    const int NUM_COINS = 5;

    double coins[NUM_COINS] = {0.05, 0.1, 0.25, 0.5, 1.0};

    double *doublePtr; // Pointer to a double

    // Assign the address of the coins array to doublePtr

    doublePtr = coins;

    // Display the contents of the coins array

    // Use subscripts with the pointer!

    cout << setprecision (2);

    cout << "Here are the values in the coins array:\n";

    for (int count = 0; count < NUM_COINS; count++)

    cout << doublePtr [count] << " ";

    // Display the contents of the coins array again, but this time use pointer notation with the array name!

    cout << "\nAnd here they are again:\n";

    for (int count = 0; count < NUM_COINS; count++)

    cout << *(coins + count) << " ";

    cout << endl;

    return 0;

    }

    程式輸出結果:

    Here are the values in the coins array: 0.05 0.1 0.25 0.5 1 And here they are again: 0.05 0.1 0.25 0.5 1

    當一個數組的地址分配給一個指標時,就不需要地址運算子了。由於陣列的名稱已經是一個地址,所以使用 & 運算子是不正確的。但是,可以使用地址運算子來獲取陣列中單個元素的地址。

  • 中秋節和大豐收的關聯?
  • NBA歷史上最高單人得分是多少分?