
- C++ 基礎
- C++ 首頁
- C++ 概述
- C++ 環境設定
- C++ 基本語法
- C++ 註釋
- C++ Hello World
- C++ 省略名稱空間
- C++ 常量/字面量
- C++ 關鍵字
- C++ 識別符號
- C++ 資料型別
- C++ 數值資料型別
- C++ 字元資料型別
- C++ 布林資料型別
- C++ 變數型別
- C++ 變數作用域
- C++ 多個變數
- C++ 基本輸入/輸出
- C++ 修飾符型別
- C++ 儲存類
- C++ 運算子
- C++ 數字
- C++ 列舉
- C++ 引用
- C++ 日期和時間
- C++ 控制語句
- C++ 決策制定
- C++ if 語句
- C++ if else 語句
- C++ 巢狀 if 語句
- C++ switch 語句
- C++ 巢狀 switch 語句
- C++ 迴圈型別
- C++ while 迴圈
- C++ for 迴圈
- C++ do while 迴圈
- C++ foreach 迴圈
- C++ 巢狀迴圈
- C++ break 語句
- C++ continue 語句
- C++ goto 語句
- C++ 建構函式
- C++ 建構函式和解構函式
- C++ 複製建構函式
C++ 指向陣列的指標
在學習與 C++ 指標相關的章節之前,您很可能無法理解本章內容。
因此,假設您對 C++ 中的指標有一點了解,讓我們開始:陣列名稱是指向陣列第一個元素的常量指標。因此,在宣告中 -
double balance[50];
balance 是指向 &balance[0] 的指標,它是陣列 balance 第一個元素的地址。因此,以下程式片段將 p 賦值為 balance 第一個元素的地址 -
double *p; double balance[10]; p = balance;
可以使用陣列名稱作為常量指標,反之亦然。因此,*(balance + 4) 是訪問 balance[4] 資料的合法方法。
將第一個元素的地址儲存在 p 中後,您可以使用 *p、*(p+1)、*(p+2) 等訪問陣列元素。以下示例顯示了上面討論的所有概念 -
#include <iostream> using namespace std; int main () { // an array with 5 elements. double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0}; double *p; p = balance; // output each array element's value cout << "Array values using pointer " << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(p + " << i << ") : "; cout << *(p + i) << endl; } cout << "Array values using balance as address " << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(balance + " << i << ") : "; cout << *(balance + i) << endl; } return 0; }
編譯並執行上述程式碼時,會產生以下結果 -
Array values using pointer *(p + 0) : 1000 *(p + 1) : 2 *(p + 2) : 3.4 *(p + 3) : 17 *(p + 4) : 50 Array values using balance as address *(balance + 0) : 1000 *(balance + 1) : 2 *(balance + 2) : 3.4 *(balance + 3) : 17 *(balance + 4) : 50
在上面的例子中,p 是指向 double 的指標,這意味著它可以儲存 double 型別變數的地址。一旦我們在 p 中有了地址,那麼 *p 將給我們提供儲存在 p 中的地址處的值,如上例所示。
廣告