c 指標引數是如何傳遞記憶體的

2021-07-22 18:21:03 字數 938 閱讀 7327

void getmemory(char *p, int num)

void test(void)

void getmemory(char **p, int num)

void test(void)

原理是一樣的,比較難理解,圖示表示:

比較好的方法是

傳指標的引用

#include #include #include #include using namespace std;

void getmemory(char *&p, int num)

void test(void)

int main()

這裡注意指標的引用 為char* &a,要是不好理解可以這樣

typedef char* pchar;

pchar &a

返回值策略

可以用函式返回值來傳遞動態記憶體。這中方法比「指標的指標」簡單多了

char *getmemory(int num)

void test(void)

在使用返回值時,千萬別返回指向「棧記憶體」的指標、引用,因為該內存在函式結束時自動消亡了,返回的指標是個野指標了。例如

char *getstring()

void test(void)

在函式中不定義陣列,定義指標,示例:

char *getstring()

void test(void)

此時的程式是正確的,但是有一點,此時分配的記憶體處於靜態區,是只可以讀取但是

不可以修改的。

c 指標引數是如何傳遞記憶體的

引數策略 如果函式的引數是乙個指標,不要指望用該指標去動態申請記憶體。如下 void getmemory char p,int num void test void 原因是編譯器總是為每個引數製作臨時副本。指標引數p,其副本為 p,使 p p。如果改變了 p所指的內容,相應的p所指的內容也跟著改變 ...

c 指標引數是如何傳遞記憶體的

引數策略 如果函式的引數是乙個指標,不要指望用該指標去動態申請記憶體。如下 void getmemory char p,int num void test void 原因是編譯器總是為每個引數製作臨時副本。指標引數p,其副本為 p,使 p p。如果改變了 p所指的內容,相應的p所指的內容也跟著改變 ...

c 指標引數是如何傳遞記憶體的

引數策略 如果函式的引數是乙個指標,不要指望用該指標去動態申請記憶體。如下 void getmemory char p,int num void test void 原因是編譯器總是為每個引數製作臨時副本。指標引數p,其副本為 p,使 p p。如果改變了 p所指的內容,相應的p所指的內容也跟著改變 ...