
- 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 - 列舉(或列舉)
- 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語言中兩個重要的語言結構,它們在許多方面彼此相關。在許多情況下,使用指標執行的任務也可以藉助陣列來執行。
但是,陣列和指標之間存在一些概念上的差異。閱讀本章以瞭解它們的差異以及比較優勢和劣勢。
C語言中的陣列
在C程式中,陣列是儲存在相鄰記憶體位置的類似型別元素的索引集合。
要宣告陣列,我們使用以下語法 -
data_type arr_name [size];
大小應為非負整數。例如 -
int arr[5];
陣列可以在宣告時初始化,其元素以逗號分隔的列表形式放在花括號內。提及其大小是可選的。
int arr[] = {1, 2, 3, 4, 5};
陣列中的每個元素都具有唯一的整型索引,從“0”開始。在C語言中,陣列的下界始終為“0”,上界為“size – 1”。
陣列示例
以下示例顯示瞭如何使用索引下標遍歷陣列 -
#include <stdio.h> int main (){ /* an array with 5 elements */ int arr[5] = {10, 20, 30, 40, 50}; int i; /* output each array element's value */ printf("Array values with subscripts: \n"); for(i = 0; i < 5; i++){ printf("arr[%d]: %d\n", i, arr[i]); } return 0; }
輸出
執行此程式碼時,將產生以下輸出 -
Array values with subscripts: arr[0]: 10 arr[1]: 20 arr[2]: 30 arr[3]: 40 arr[4]: 50
C語言中的指標
C允許您訪問編譯器隨機分配的變數的記憶體位置。取地址運算子(&)返回變數的地址。
儲存另一個變數地址的變數稱為指標。指標的型別必須與它儲存地址的變數型別相同。
為了與目標變數型別區分開來,指標的名稱以星號(*)為字首。如果我們有一個int變數,則其指標宣告為“int *”。
int x = 5; int *y = &a;
注意:在陣列的情況下,其第0個元素的地址被分配給指標。
int arr[] = {1, 2, 3, 4, 5}; int *ptr = &arr[0];
事實上,陣列的名稱本身解析為第0個元素的地址。

因此,我們也可以寫 -
int *ptr = arr;
由於陣列的元素放置在相鄰的記憶體位置,並且每個下標的地址都增加4(在int陣列的情況下),因此我們也可以使用此功能來藉助指標遍歷陣列元素。
指標示例
以下示例顯示瞭如何使用指標遍歷陣列 -
#include <stdio.h> int main (){ /* an array with 5 elements */ int arr[5] = {10, 20, 30, 40, 50}; int *x = arr; int i; /* output each array element's value */ printf("Array values with pointer: \n"); for(i = 0; i < 5; i++) { printf("arr[%d]: %d\n", i, *(x+i)); } return 0; }
輸出
執行程式碼並檢查其輸出 -
Array values with pointer arr[0]: 10 arr[1]: 20 arr[2]: 30 arr[3]: 40 arr[4]: 50
C語言中陣列和指標的區別
下表重點介紹了陣列和指標之間的重要區別 -
陣列 | 指標 |
---|---|
它將同類資料型別的元素儲存在相鄰的記憶體位置。 | 它儲存變數或陣列的地址 |
陣列定義為相似資料型別的集合。 | 指標是一個儲存另一個變數地址的變數。 |
可以儲存的變數數量由陣列的大小決定。 | 指標只能儲存單個變數的地址。 |
陣列的初始化可以在定義它們時完成。 | 指標在定義時不能初始化。 |
陣列的性質是靜態的。 | 指標的性質是動態的。 |
陣列不能根據使用者的需求調整大小。 | 指標可以在任何時候調整大小。 |
陣列的分配在編譯時完成。 | 指標的分配在執行時完成。 |
廣告