首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C 語言陣列指標:指向陣列的指標與遍歷技巧

     編輯:C 語言基礎

陣列指標即指向陣列元素的指標。陣列名在表達式中轉為指向首元素的指標,故可直接賦值給指標變數。

基本定義與等價性

int arr[] = {99, 15, 100, 888, 252};
int *p = arr;           // 等價於 int *p = &arr[0];

arr、p、&arr[0] 三者等價,皆指向陣列開頭。

透過指標遍歷陣列

int len = sizeof(arr) / sizeof(int);
for (int i = 0; i < len; i++)
    printf("%d ", *(p+i)); // 等價於 p[i] 或 arr[i]

注意: 無法用 sizeof(p) 求陣列長度,p 僅是指標,編譯器不知其指向陣列大小。

指標運算與元素存取

  • p+i → 第 i 個元素地址
  • *(p+i) / p[i] → 第 i 個元素值
  • 指標可任意移動:p = &arr[2] 後 p-2、p+1 分別指向第 0、3 個元素

兩種存取方式

  1. 下標法:arr[i] 或 p[i]
  2. 指標法:*(arr+i) 或 *(p+i)

陣列名為常量指標(值不可改),陣列指標為變量指標(可移動)。

自增運算符遍歷技巧

for (int i = 0; i < len; i++)
    printf("%d ", *p++); // *p++ 等價於 *(p++),先取值再移動指標

*arr++ 非法,因 arr 為常量不可修改。

指標運算優先級謎題

假設 p 指向第 n 個元素:
  • *p++ ≡ *(p++):取第 n 個值,p 移向下一個
  • *++p ≡ *(++p):p 先移向下一個,取第 n+1 個值
  • (*p)++:取第 n 個值並對該元素值加 1(修改陣列內容)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved