指標做為形參

2022-08-05 10:42:25 字數 709 閱讀 9874

1,

void getmemory(char *p, int num)

void test(void)

原因:編譯器總是要為函式的每個引數製作臨時副本,指標引數p的副本是_p,編譯器使_p = p。如果函式體內的程式修改了_p的內容,就導致引數p的內容作相應的修改。這就是指標可以用作輸出引數的原因。在本例中,_p申請了新的記憶體,只是把_p所指的記憶體位址改變了,但是p絲毫未變。所以函式getmemory並不能輸出任何東西。事實上,每執行一次getmemory就會洩露一塊記憶體,因為沒有用free釋放記憶體。

只修改了臨時副本_p的內容,但p的內容沒有修改

2:

void getmemory2(char **p, int num)

void test2(void)

3:指標的指標不好理解,可以用返回值傳遞

char *getmemory3(int num)

4:動態記憶體會被自動釋放掉麼

(1)指標消亡了,不代表它所指的記憶體被自動釋放

(2)記憶體被釋放了,並不表示指標會消亡或者成了null指標了

5:產生野指標的原因:

1)指標沒初始化,2)指標p,free或者delete後,p沒有設定為null,仍然被認為是個合法的指標使用,3)指標操作超越了變數的作用範圍

指標做為形參

1,void getmemory char p,int num void test void 原因 編譯器總是要為函式的每個引數製作臨時副本,指標引數p的副本是 p,編譯器使 p p。如果函式體內的程式修改了 p的內容,就導致引數p的內容作相應的修改。這就是指標可以用作輸出引數的原因。在本例中,p申...

c 陣列做為形參時 該引數退化為指標

當陣列做為函式的形參的時候,該引數退化為指標,並且是無法直接求得陣列的大小。傳陣列給乙個函式,陣列型別自動轉換為指標型別,因而傳的實際是位址。void func int array 10 void func int array void func int array 所以以上三種函式宣告完全等同。實...

引用形參 指標形參的使用

引用形參 指標形參可以改變主函式內的實參值 includeusing std cin using std cout using std endl 形參其實是在把實參傳遞給子函式的時候定義了乙個新的變數,但是這個變數的值和實參相等,所以在子函式裡無論怎麼修改都不會影響到呼叫它的函式的實參的值 int ...