指標作為函式引數,申請動態記憶體方法

2021-09-10 21:11:10 字數 815 閱讀 8394

void getptr(int **p,int num)

void main()

}

錯誤的:

void getptr(int *p,int num) 

void main()

首先要說明的是int *ptr,這時候ptr指向乙個不明確的位址,在這種情況下getptr(ptr,10);這一句傳乙個位址給getptr裡面的p指標,這時候p指標獲得的是ptr指標的乙個副本,確切的說是ptr指向的物件的記憶體位址,所以這種方式在函式裡面可以用來傳乙個指標指向的資料,這個資料是引用,但是指標還是副本,就是p與ptr兩個所指的資料是一樣的,但是兩個在記憶體的位址是不一樣的. 而你這個程式要求的是給ptr動態分配記憶體,所以當分配了一塊的記憶體,並且這個記憶體的首位址賦給p,這時候p指向的東西改變了,但沒有影響到ptr指標.ptr指標指向的還是他原來的資料,只是p指標的資料改變了. 所以這種情況引入乙個指標的指標,讓p指標指向ptr這個指標(而不是ptr的副本),這時候動態的分配的資料塊傳給*p,這個*p就是ptr,所以給ptr分配記憶體成功.

**:

#include using namespace std;

template void get2array(t ***ptr, const int &row, const int &column)

指向指標的指標申請動態記憶體

在 高質量c程式設計指南 中,提到了如果函式的引數是乙個指標,那麼別指望它能申請動態記憶體。如下 include include void getmemory char p,int num int main void getmemory char p,int num 最後的輸出的stu的結果是0,即...

malloc函式申請動態記憶體的用法

咱們開門見山吧,直接上 更容易理解 an highlighted block 1 include 2 include 3 include 45 struct student 6 1011 intmain 1220 21 p student name tom 22 p student age 23 2...

一級指標的動態記憶體申請

動態記憶體申請的三大函式 1.void malloc size t,size 特點 申請的記憶體不會被初始化 2.void calloc size t count,size t size 特點 會給申請的記憶體初始化 數字類 初始值為0 字元類 初始值為 0 3.void realloc void ...