指針的概念
指針就是地址, 利用這個地址可以找到指定的數據
指針就是地址, 那么在使用的時候, 常常會簡單的說 指針變量為指針
指針變量就是存儲地址的變量
int *p1;// 申請了一個變量, 即在內存中開辟了一塊內存, 存儲數據
// 開辟了 8 個字節, 在 Mac 下 指針都占 8 個字節
使用指針, 實際上應該說成使用指針變量
1> 算術運算
+1 移動幾個字節?
看類型: int *, long *, char *
2> 獲得地址表示的數據
指針里面存儲的是地址, 就可以將該地址中的數據取出來
尋址運算符 *&p1 -> p1
3> 修改改地址中的數據
4> 作為函數參數的使用(*****)
如果傳遞的不是指針變量, 而是普通的變量, 就是值傳遞: 函數內與函數外是兩個不同的變量, 只是存儲的數據相同(好比發送文件)
如果傳遞的是指針變量, 即傳遞的是地址, 那么就是引用傳遞: 函數內外可以看成同一個變量(好比發送鏈接)
由于函數參數使用指針后, 可以實現函數內變量修改后, 影響到函數外的變量. 因此常常將函數參數設置為指針類型的變量
實現利用參數返回多個數據的函數
scanf("%d", &num);
二級指針
二級指針就是指向一級指針的指針(n 級指針就是 指向 n-1 級指針的 指針)
指針的本質就是地址, 那么幾級指針也只是一個地址, 唯一不同的就是尋址的結果(*p)
1>在開發中使用 二級指針的地方就是利用函數或方法返回一個 一級指針數據
2> 如果需要用函數參數返回數據, 如果返回的是一般的數據, 傳遞一級指針
3> 如果返回的是一個一級指針, 那么參數應該是一個二級指針
4> 如果返回的是一個 n 級指針, 那么參數應該是一個 n+1 級指針
下圖中*p1指的是num的值,*p2指的是p1內存的地址,**p2也指的是num的值......
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選