C語言學習2:指針與數組的細節

C語言學習2:指針與數組的細節

簡介:本文爲學習數組與指針時,對於相關概念和用法較易混淆,特記錄下來以清晰概念,主要用作自己使用,故請原諒排版問題,謝謝。

1、運算符&:
①作用爲取一個變量的地址
②輸出地址時格式要使用%p
③強制將地址轉爲int時輸出可能失真,取決於編譯時32/64位架構
④&右邊必須是一個單純的變量,不能是a++之類

2、數組:
①&a a &a[0] 等價,都爲數組(第一個單元)的地址。
②傳入函數的數組是指針,大小爲一個地址,指向那個數組。
③數組變量本身表達地址,int*p = a;
④ *a表示a[]的第一個單元
⑤數組變量是const類型的指針,故不能使用b = a賦值:int b[] -->int *const b
⑥int sum(const int a[] )可以保護數組不被破壞。

3、指針:
①指針是保存地址的變量,必須先初始化再使用:int *p=&i
②int與 * 靠近與否僅將後邊相鄰的變量定義爲指針類型。
③函數參數爲指針時,調用時使用 f (&i) 的形式,且在函數內部可以改變外部變量的值,適用於交換、需要輸出多值、值通過參數指針返回狀態通過return返回。
④p[0]=*p
⑤int *const q = &i 表示q的值不能改變,即q指向i的事實不能改變
而 const int * p 或者 int const * p表示不能通過這個指針去修改那個變量。
void f (const int * x)常用於參數類型比地址大,且能避免函數對變量進行修改(結構)
⑥兩個指針相減後的結果爲兩地址之差除以sizeof
⑦常用 *p++做遍歷

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章