
- C程式設計教程
- C - 首頁
- 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 - 關係運算符
- C - 邏輯運算子
- C - 位運算子
- C - 賦值運算子
- C - 一元運算子
- C - 自增和自減運算子
- C - 三元運算子
- C - sizeof 運算子
- C - 運算子優先順序
- C - 其他運算子
- C語言中的決策
- C - 決策
- C - if 語句
- C - if...else 語句
- C - 巢狀 if 語句
- C - switch 語句
- C - 巢狀 switch 語句
- C語言中的迴圈
- C - 迴圈
- C - while 迴圈
- C - for 迴圈
- C - do...while 迴圈
- C - 巢狀迴圈
- C - 無限迴圈
- C - break 語句
- C - continue 語句
- C - goto 語句
- C語言中的函式
- C - 函式
- C - 主函式
- C - 按值傳遞函式呼叫
- C - 按引用傳遞函式呼叫
- C - 巢狀函式
- C - 可變引數函式
- C - 使用者定義函式
- C - 回撥函式
- C - 返回語句
- C - 遞迴
- C語言中的作用域規則
- C - 作用域規則
- C - 靜態變數
- C - 全域性變數
- C語言中的陣列
- C - 陣列
- C - 陣列的特性
- C - 多維陣列
- C - 將陣列傳遞給函式
- C - 從函式返回陣列
- C - 可變長陣列
- C語言中的指標
- C - 指標
- C - 指標和陣列
- C - 指標的應用
- C - 指標運算
- C - 指標陣列
- C - 指向指標的指標
- C - 將指標傳遞給函式
- C - 從函式返回指標
- C - 函式指標
- C - 指向陣列的指標
- C - 指向結構體的指標
- C - 指標鏈
- C - 指標與陣列
- C - 字元指標和函式
- C - 空指標
- C - void 指標
- C - 野指標
- C - 解引用指標
- C - 近指標、遠指標和巨指標
- C - 指標陣列的初始化
- C - 指標與多維陣列
- C語言中的字串
- C - 字串
- C - 字串陣列
- C - 特殊字元
- C語言中的結構體和聯合體
- C - 結構體
- C - 結構體和函式
- C - 結構體陣列
- C - 自引用結構體
- C - 查詢表
- C - 點(.)運算子
- C - 列舉(或 enum)
- C - 結構體填充和打包
- C - 巢狀結構體
- C - 匿名結構體和聯合體
- C - 聯合體
- C - 位域
- C - typedef
- C語言中的檔案處理
- C - 輸入與輸出
- C - 檔案I/O(檔案處理)
- C預處理器
- C - 預處理器
- C - 編譯指示
- C - 預處理器運算子
- C - 宏
- C - 標頭檔案
- C語言中的記憶體管理
- C - 記憶體管理
- C - 記憶體地址
- C - 儲存類別
- 其他主題
- C - 錯誤處理
- C - 可變引數
- C - 命令執行
- C - 數學函式
- C - static 關鍵字
- C - 隨機數生成
- C - 命令列引數
- C程式設計資源
- C - 問答
- C - 快速指南
- C - 速查表
- C - 有用資源
- C - 討論
C語言中的指標陣列
什麼是指標陣列?
就像整數陣列儲存一組整型變數一樣,**指標陣列**將儲存指標型別的變數。這意味著指標陣列中的每個變數都是一個指標,指向另一個地址。
陣列的名稱可以用作指標,因為它儲存陣列第一個元素的地址。如果我們將陣列的地址儲存在另一個指標中,那麼就可以使用指標來運算元組指標運算。
建立指標陣列
要在 C 語言中建立指標陣列,需要像宣告指標一樣宣告指標陣列。使用資料型別,然後是星號,然後是識別符號(指標陣列變數名),後面跟著一個包含陣列大小的下標([])。
在指標陣列中,每個元素都包含指向特定型別的指標。
建立指標陣列的示例
以下示例演示瞭如何建立和使用指標陣列。在這裡,我們聲明瞭三個整型變數,為了訪問和使用它們,我們建立了一個指標陣列。藉助指標陣列,我們列印了變數的值。
#include <stdio.h> int main() { // Declaring integers int var1 = 1; int var2 = 2; int var3 = 3; // Declaring an array of pointers to integers int *ptr[3]; // Initializing each element of // array of pointers with the addresses of // integer variables ptr[0] = &var1; ptr[1] = &var2; ptr[2] = &var3; // Accessing values for (int i = 0; i < 3; i++) { printf("Value at ptr[%d] = %d\n", i, *ptr[i]); } return 0; }
輸出
當以上程式碼編譯並執行時,將產生以下結果:
Value of var[0] = 10 Value of var[1] = 100 Value of var[2] = 200
可能存在我們希望維護一個數組的情況,該陣列可以儲存指向“int”或“char”或任何其他可用資料型別的指標。
指向整數的指標陣列
這是指向整數的指標陣列的宣告:
int *ptr[MAX];
它將ptr宣告為一個包含 MAX 個整型指標的陣列。因此,ptr中的每個元素都儲存指向int值的指標。
示例
以下示例使用三個整數,它們儲存在指標陣列中,如下所示:
#include <stdio.h> const int MAX = 3; int main(){ int var[] = {10, 100, 200}; int i, *ptr[MAX]; for(i = 0; i < MAX; i++){ ptr[i] = &var[i]; /* assign the address of integer. */ } for (i = 0; i < MAX; i++){ printf("Value of var[%d] = %d\n", i, *ptr[i]); } return 0; }
輸出
當以上程式碼編譯並執行時,將產生以下結果:
Value of var[0] = 10 Value of var[1] = 100 Value of var[2] = 200
指向字元的指標陣列
您還可以使用指向字元的指標陣列來儲存字串列表,如下所示:
#include <stdio.h> const int MAX = 4; int main(){ char *names[] = { "Zara Ali", "Hina Ali", "Nuha Ali", "Sara Ali" }; int i = 0; for(i = 0; i < MAX; i++){ printf("Value of names[%d] = %s\n", i, names[i]); } return 0; }
輸出
當以上程式碼編譯並執行時,將產生以下結果:
Value of names[0] = Zara Ali Value of names[1] = Hina Ali Value of names[2] = Nuha Ali Value of names[3] = Sara Ali
指向結構體的指標陣列
當您有一個結構體列表並希望使用指標來管理它時。您可以宣告一個結構體陣列來訪問和操作結構體列表。
示例
以下示例演示了指向結構體的指標陣列的使用。
#include <stdio.h> #include <stdlib.h> #include <string.h> // Declaring a structure typedef struct { char title[50]; float price; } Book; const int MAX = 3; int main() { Book *book[MAX]; // Initialize each book (pointer) for (int i = 0; i < MAX; i++) { book[i] = malloc(sizeof(Book)); snprintf(book[i]->title, 50, "Book %d", i + 1); book[i]->price = 100 + i; } // Print details of each book for (int i = 0; i < MAX; i++) { printf("Title: %s, Price: %.2f\n", book[i]->title, book[i]->price); } // Free allocated memory for (int i = 0; i < MAX; i++) { free(book[i]); } return 0; }
輸出
當以上程式碼編譯並執行時,將產生以下結果:
Title: Book 1, Price: 100.00 Title: Book 2, Price: 101.00 Title: Book 3, Price: 102.00
廣告