#include
#include
voidf1(
int*q)
intmain()
執行結果:
分析:(靜態)
main函式中:p 指向 i 的位址,所以,*p = i;
呼叫 f1 函式時,q 拷貝了 p 的內容即 i 的位址,故 *q = *p = i;
所以 i 的值改變了。
#include
#include
voidf2(
int*q)
intmain()
執行結果:
i=5, *p=5
*q_old=5
*q_new=15
i=5, *p=5
分析:(動態)
main函式中:p指向i的位址,所以,*p = i;
呼叫 f2 函式時,q拷貝了p的內容即 i 的位址,所以 q 也指向 i,故 *q = *p = i;
但是,f2函式中,q又指向了一段動態空間而不再指向 i,此時 *q 只會引起動態空間內容的變化;
所以 *q 的值前後發生了變化,而 i 和 *p 的值不變。
#include
#include
voidf3(
int*
*q)int
main()
執行結果:
i=5, *p=5
**q_old=5
**q_new=10
i=5 , *p=10
分析:(動態)
main函式中:p指向i的位址,所以,*p = i;
呼叫 f3 函式時,q指向p(二級指標q儲存了p的位址),所以 *q = p,**q = i;
在f3函式中,*q 指向了一段動態記憶體,即 p也指向那段動態記憶體而不再指向主函式中的 i,
此時 **q=10就相當於 *p = 10 ;
所以函式呼叫結束後,*p 的值發生了變化,而 i 的值未改變。
指標常見問題
1.指標是什麼?指標是變數,所以指標有變數的特性 a.系統為指標分配記憶體空間 b.指標有自己的 位址 c.指標能夠存值,但這個值比較特殊 位址。2.指標的型別和指標所指向的型別 指標的型別 把指標宣告語句中指標名字去掉,剩下的部分即為這個指標的型別 指標所指向的型別 把指標宣告語句中的指標名字和名...
跨域常見問題
這裡要說的是,跨域的幾個場景 1 ajax跨域 ajax跨域跟前端沒有什麼關係,只是後端伺服器的安全限制,但也可在前端處理。常見的處理方式分為 1 前端處理 通過jsonp的方式,這裡不細講。大概的思路是,借助標籤不存在跨域的 bug 模擬向另乙個服務發請求 2 後端處理 有幾種方式 2 ifram...
C 指標篇之 記憶體跨函式使用問題
1 靜態變數不能跨函式使用 靜態變數系統是固定分配記憶體的屬於靜態記憶體,一旦該函式使用結束所有靜態變數記憶體空間都會重置釋放,相當於清零 例如下面這段 語法上並沒有報錯,編譯器也能執行出來,但是邏輯上是不對的 當fun 函式使用結束後,其函式內部由系統自動分配的靜態變數p和i記憶體空間會釋放,所以...