指標常量與常量指標
常量是不可修改不可賦值,在程式執行中其值是不會改變的。
c語言中宣告乙個常量指標形式如下:
1)常量指標
const int *p;
int const *p;
常量指標顧名思義是乙個常量的指標,指向的是乙個常量,這個常量能通過指標訪問,但不能通過指標修改它的值。
void main()
從上,我們可以看到常量指標指向的值是常量不可更改,但指標的值是可以修改的。
2)指標常量
宣告乙個指標常量:
int a = 100;
int b = 200;
int *const p = &a;
p = &b; //錯誤,p是常量 不可賦值
指標常量表示指標是乙個常量不可賦值。因為指標常量是乙個常量,所以在宣告的時候一定要賦初值。
指標的應用-----(鍊錶的簡單實現)
我們知道,鍊錶的位址是不要求連續的,這使得空間利用率高
鍊錶儲存的內容包含資料和指標,指標指向下乙個節點,如上圖。
接下來,我們利用指標,實現簡單的鍊錶:
struct mylinklist //定義乙個結構體
;typedef struct mylinklist list; //為結構體取別名
void add(list **phead, int num)
else
list *newlist = malloc(sizeof(list)); //分配記憶體
newlist->num = num; //為num賦值
newlist->pnext = null; //為指標變數賦值
p->pnext = newlist; //為上一節點的pnext賦值}};
void main()
以上,我們實現了簡單的鍊錶,可以通過add()方法像鍊錶中新增簡單的資料。我們可以看出,鍊錶實現空間不連續是利用指標。末位節點位址列為空沒有指向。
下篇,我們繼續講解指標,利用指針對鍊錶進行簡單遍歷和刪除。
重拾C語言之指標篇(二)
指標與函式引數傳遞 c語言在傳遞引數時,會預設為形參分配新的記憶體空間,形參只有在被呼叫時才分配記憶體 單元,在呼叫結束時,即刻釋放所分配的記憶體單元。void main void change int i 我們可以看到,呼叫change 方法後並沒有改變i的值,我們可以把main方法和change...
重拾c語言之動態記憶體分配
動態記憶體分配 傳統陣列的缺點 1陣列長度必須事先制定,且只能是長整數不能是變數 2傳統形式定義的陣列該陣列的記憶體程式無法手動釋放 3陣列一旦定義,系統就會為該陣列分配的儲存空間就會一直存在直到該函式執行結束 4陣列的長度不能再函式的執行的過程中動態的擴充或者縮小 5不能跨函式使用 為什麼需要動態...
C語言重拾之路 2
32位作業系統,配合32位cpu,定址空間位2 32次方,計算出來是4294967296位元組,就是4g,32位系統最大支援4g空間,如果想要32位系統支援4g以上空間的話,就要用pae的特殊核心,採用特殊方式訪問,64位作業系統配合64位cpu,定址空間是2 64次方,計算出來是184467440...