1:位址空間布局隨機化 & 資料執行保護
2:指標的定義
int * ptr1,ptr2; 錯誤的定義2個指標
int *ptr1,*ptr2 ; 正確定義2個指標
使用巨集定義輔助:#define pint int *
pint ptr1,ptr2;
這樣也有問題,巨集定義只是起到乙個書寫替代作用,在編譯過程中,實際和第一次定義一樣
使用型別定義:typedef int * pint
pint ptr1, ptr2;
這樣定義2個整數指標是可以的。定義乙個自定義型別pint為整數指標型別。
3:指標的初始化
3.1:野指標 指標沒有初始化,指標指向的內容不可知。
3.2:一般初始化時將指標指向null,在賦值後,再檢測其是否為null,來判斷是否賦值正確。
3.3:錯誤的解引使用
int* pi;
*pi=& num; ///看似正確,其實指標pi未初始化,就給其賦值 所指向的位址,會導致錯誤
4:迷途指標
指標被釋放後,還來呼叫指標。
5:將陣列傳遞給函式時,一定要傳遞陣列的長度,這樣會幫助函式避免越過陣列邊界
6:記憶體釋放:沒有釋放,重複釋放。
大部分簡單的做法是:在釋放指標記憶體空間後,將其賦值null,大部分釋放函式會忽略null空指標。
深入理解C指標之三 指標和函式
原文 深入理解c指標之三 指標和函式 理解函式和指標的結合使用,需要理解程式棧。大部分現代的塊結構語言,比如c,都用到了程式棧來支援函式的執行。呼叫函式時,會建立函式的棧幀並將其推到程式棧上。函式返回時,其棧幀從程式棧上彈出。在使用函式時,有兩種情況指標很有用。一種是將指標作為引數傳遞給函式,函式可...
深入理解C指標之三 指標和函式
原文 深入理解c指標之三 指標和函式 理解函式和指標的結合使用,需要理解程式棧。大部分現代的塊結構語言,比如c,都用到了程式棧來支援函式的執行。呼叫函式時,會建立函式的棧幀並將其推到程式棧上。函式返回時,其棧幀從程式棧上彈出。在使用函式時,有兩種情況指標很有用。一種是將指標作為引數傳遞給函式,函式可...
深入理解C指標之四 指標和陣列
原文 深入理解c指標之四 指標和陣列 陣列是c內建的基本資料結構,陣列表示法和指標表示法緊密關聯。一種常見的錯誤認識是陣列和指標完全可以互換,儘管陣列名字有時可以當做指標來用,但陣列的名字不是指標。陣列和指標的區別之一就是,儘管陣列的名字可以返回陣列位址,但是名字不能作為賦值操作的目標。陣列是能用索...