到底什麼時候用指針

在c/c++編程中,到底什麼時候該用指針來傳遞參數呢?總結如下:
1. 需要改變實參的時候, 只能用指針.
2. 傳遞大型結構並且"只讀"其元素的時候,
因爲大型結構通過值傳遞, 需要拷貝其每個元素, 這樣效率太低.
3. 需要遍歷數組或頻繁引用其元素時, 這樣效率比使用下標高.
4. 動態分配空間時, 必須使用指針.
5. 傳遞數組時, 必須使用指針.
6. 函數返回指針時, 比如fopen
另外,有時候需要使用二級指針,即指針的指針,例如:
MemAllocate(char *a){
a=(char *)malloc(sizeof(char));
}
當調用此函數進行內存分配時,發現不能分配內存不能成功,因爲此時對於a來說,形參改變了,但實參並不會改變,他們對應於不同的內存單元。正確的寫法應該是:
MemAllocate(char **a){
*a=(char *)malloc(sizeof(char));
}
這樣就能夠正確地分配內存了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章