選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C 指標


建立指標

您在上一個章節中瞭解到,可以使用引用運算子 & 來獲取變數的記憶體地址

示例

int myAge = 43; // 一個 int 變數

printf("%d", myAge);  // 輸出 myAge 的值 (43)
printf("%p", &myAge); // 輸出 myAge 的記憶體地址 (0x7ffe5367e044)
自己動手試一試 »

指標是一個變數,它儲存另一個變數的記憶體地址作為其值。

一個指標變數指向與它型別相同的資料型別(如 int),並使用 * 運算子建立。

您正在處理的變數的地址被分配給指標。

示例

int myAge = 43;     // 一個 int 變數
int* ptr = &myAge;  // 一個指標變數,名為 ptr,它儲存 myAge 的地址

// 輸出 myAge 的值 (43)
printf("%d\n", myAge);

// 輸出 myAge 的記憶體地址 (0x7ffe5367e044)
printf("%p\n", &myAge);

// 使用指標輸出 myAge 的記憶體地址 (0x7ffe5367e044)
printf("%p\n", ptr);
自己動手試一試 »

示例說明

建立一個名為 ptr 的指標變數,它指向一個 int 變數(myAge)。請注意,指標的型別必須與您正在處理的變數的型別(在本例中為 int)相匹配。

使用 & 運算子來儲存 myAge 變數的記憶體地址,並將其分配給指標。

現在,ptr 儲存 myAge 記憶體地址的值。


解引用

在上面的示例中,我們使用指標變數來獲取變數的記憶體地址(與 & 引用運算子一起使用)。

您還可以透過使用 * 運算子(解引用運算子)來獲取指標指向的變數的值。

示例

int myAge = 43;     // 變數宣告
int* ptr = &myAge;  // 指標宣告

// 引用:使用指標輸出 myAge 的記憶體地址 (0x7ffe5367e044)
printf("%p\n", ptr);

// 解引用:使用指標輸出 myAge 的值 (43)
printf("%d\n", *ptr);
自己動手試一試 »

請注意,這裡的 * 符號可能會造成混淆,因為它在我們的程式碼中做了兩件事:

  • 當用於宣告時(int* ptr),它會建立一個指標變數
  • 當不用於宣告時,它充當解引用運算子

知識點:在 C 語言中宣告指標變數有兩種方式:

int* myNum;
int *myNum;

關於指標的注意事項

指標是 C 語言區別於其他程式語言(如 PythonJava)的一個重要特性。

它們在 C 語言中很重要,因為它們允許我們操作計算機記憶體中的資料。這可以減少程式碼量並提高效能。如果您熟悉列表、樹和圖等資料結構,您應該知道指標在實現這些結構時特別有用。有時您甚至必須使用指標,例如在使用 檔案記憶體管理時。

但要小心;指標必須謹慎處理,因為有可能損壞儲存在其他記憶體地址中的資料。


C 練習

透過練習來測試自己

練習

建立一個名為 ptr 的指標變數,它指向 int 變數 myAge。

int myAge = 43;
  = &myAge;

開始練習



×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援