指標作為函式的引數

2021-06-23 07:07:04 字數 712 閱讀 3294

一、呼叫getptr後ptr仍然為null程式出錯

#include #include void getptr(char *p,int num)

int main()

二、修改程式

#include void getptr(char **p,int num)

int main()

解釋:

首先要說明的是char *ptr,開始ptr為null,在這種情況下getptr(ptr,10);

這一句傳乙個位址給getptr裡面的p指標,這時候p指標獲得的是ptr指標的乙個副本,

確切的說是ptr指向的物件的記憶體位址,所以這種方式在函式裡面可以用來傳

乙個指標指向的資料,這個資料是引用,但是指標還是副本,就是p與ptr兩個所指的資料是一樣的,

但是兩個在記憶體的位址是不一樣的. 而你這個程式要求的是給ptr動態分配記憶體,所以當分配了一塊的記憶體,

並且這個記憶體的首位址賦給p,這時候p指向的東西改變了,但沒有影響到ptr指標.ptr指標指向的還是他原來的資料,

只是p指標的資料改變了. 所以這種情況引入乙個指標的指標,讓p指標指向ptr這個指標(而不是ptr的副本),

這時候動態的分配的資料塊傳給*p,這個*p就是ptr,所以給ptr分配記憶體成功.

指標作為函式引數

當指標作為函式引數時,對引數本身的修改並不影響原來的值,比如下面的 刪除鍊錶中第乙個值為item的結點。但是結果卻不正確。void delete node head,int item 這段 的問題是,第乙個引數是指標型別而head null修改的實際上是這個指標的乙個副本,所以不會對原來的指標產生效...

指標作為函式引數

臨近畢業,還有找工作的事情,繁忙之際還是堅持看一下c語言的知識,重點的地方或者不清楚的地方還是要記錄一下。本章以指標作為函式傳參來說一下學習心得,大部分內容源自c語言程式設計課本。首先從c語言中函式引數的傳遞方向說起,大家都知道,c語言中函式引數的傳遞方向是單向的,只能由主調函式的實參傳遞到被調函式...

指標作為函式的引數

各位小夥伴學習了指標之後是不是跟我一樣,一臉矇逼這玩意在講啥,我也是經過了很長時間的思考才勉強懂了指標的意思。指標其實就是一種變數,只是它與普通變數不太一樣,普通變數存放的是乙個實實在在的值,而它存放的卻是乙個值的位址。計算機要對資料進行處理是需要知道這個資料它在 的,也就是這個資料的位址。而我們平...