一維陣列與指標之間的關係;
假如指標變數 px 指向陣列 x 的首元素,則;
x[i], * (px+i), * (x+i), px[i]具有完全相同的功能,即訪問陣列第 i+1 個元素。
首先, x[i] <==> * (x+i) 是無條件等價的,指標變數指向陣列 x 的首元素==> px = x;
那麼,px[i] == x[i] , * (px+i) = * (x+i).
所以以上4中方式的表達功能是一樣的。
指標變數 px 和陣列名 x (也叫陣列的指標)有著本質的區別。
指標變數是位址變數,而陣列的指標是位址常量,來看幾個例子;
x++;
px++;
x+1;
在以上3條語句中
x++; 是錯誤的,因為陣列的指標是位址常量不能做++運算;
px++; 是正確的,px為指標可以++,向位址大的方向移動,且自加一次移動的位址為所指向資料型別的位元組數。
eg:若指標為 int 型,px++,位址往大的方向移動 4 位;
x+1; 是正確的,因為 x+1; 執行之後並沒有改變 x 的值。
#include
int main()
;int * p;
p = a;
a+1;
p++;
printf("%d\n",p[1];
return
0;}
個程式的結果是 3
首先指標 p 指向了陣列 a 的首元素,也就是1;
然後 a+1; 這句沒什麼意義,因為陣列名 a 是常量;
接著 p++;指標往後移了一次,指向了 a[1],此時 a[1] = p[0];
最後列印出 p[1],p[1]相當於 p[0+1],也就是 a[1+1] == a[2],所以結果是3.
「`
C語言學習筆記整理1
以列印hello world為例,介紹以下知識點 1 無論看什麼程式,首先要去找到main函式 main函式是程式執行的入口 2 include和 include stdio.h 的區別 include告訴編譯器到系統的目錄下面去查詢標頭檔案 include stdio.h 告訴編譯器先到當前目錄下...
C語言學習筆記整理3
1 記憶體分配 2 關鍵字 記憶體分配 儲存在四塊區域 棧 stack 堆 heap 資料區 data和.bas 常量區 唯讀 1 棧 區域性變數 函式的形參,自動變數 auto修飾 特點 1 棧空間是os 作業系統 自動分配和 程式設計師自己不用管 2 可以被反覆使用 3 棧空間是髒的。儲存上一次...
C語言學習日誌 初步知識
分類 關鍵字 預定義識別符號 使用者識別符號 命名規則 可以由字母 數字和下劃線組成,並且第乙個字元必須是字母或下劃線 位 記憶體中最小的單位,也稱二進位制數 位元組 8個二進位制位 若干位元組組成乙個字,用乙個字來存放一條機器指令或乙個資料 乙個字含多少位元組隨機器不同而不同 通常把乙個位元組中最...