乙個函式的改變要影響另乙個函式需要兩個條件:
1、傳指標。
2、解引用。
通過交換a和b數值的例項來說明其重要性:
在主函式中輸入a和b的值;int a = 10;int b = 20;預期輸出結果為a = 20;b = 10。
明顯與預期結果不符。原因:沒有傳指標!
具體操作為:
也與預期結果不符。原因:沒有解引用。
與預期相符,多測試幾組有代表性的資料。既傳指標又解引用,交換了兩個資料的值。
在這個例子中,除了1、2兩種可能的問題外,還可能出現以下這種錯誤。
系統直接崩潰。原因:定義的tmp是乙個野指標。
野指標,也叫懸掛指標,即未初始化的指標,沒有訪問許可權的位址(指標)。
注意:野指標不是空指標。
空指標:null,表明當前的指標無效。注意:不能對乙個無效的指標解引用。
todo:如下程式:
int a = 10;
int *p = &a;
p = null;
printf("%d\n",*p);
程式會崩潰,因為不能對乙個無效的指標解引用。現將其中的p = null;用功能函式fun(p)替換,fun函式為:
void fun(int *p)
int main()
c 空指標和野指標
野指標不同於空指標,空指標是指乙個指標的值為null,而野指標的值並不為null,野指標會指向一段實際的記憶體,只是它指向 我們並不知情,或者是它所指向的記憶體空間已經被釋放,所以在實際使用的過程中,我們並不能通過指標判空去識別乙個指標是否為野指標。野指標可能指向乙個可用的,但是正在被使用的空間,如...
c 空指標,野指標
當給空指標所指的位址賦值時,會報錯 int p nullptr p 10 int p 野指標,未初始化int p new int delete p 刪除後不知道p指向 include using namespace std class a void a func void void test voi...
空指標和野指標
關於多次free 出現的野指標的原因 指標變數和指標變數所指的記憶體空間變數是兩個不同的概念 free 最主要釋放的指標變數所指的記憶體空間,因為記憶體資源是有限的,很寶貴,需要 利用 但是指標變數本身的值還是之前的指向,未重置成null 所以再次釋放的時候,指向了未知的記憶體區域,產生野指標 避免...