一開始無意注意到兩段**:
函式返回區域性指標變數是否可行?
**一:
**二:
**一是有問題的,很多部落格都做了解釋:
1.指向指標的指標申請動態記憶體
2.關於:如果函式的引數是乙個指標,不要指望用該指標去申請動態記憶體 我的理解
等等都說了,函式會對引數做拷貝,那麼可能對剛接觸的人來講,的確不太好理解。
我的理解就是一句:
_p為系統產生的副本
**一:傳進來的是個指標,但沒有明確的指向誰;(_p = p),分配記憶體後首指標賦值給_p,p並沒有變化。
二**:傳進來的指標,是有指向的,指向的就是外面定義的那個指標str; (_p = p =&str),_p指向str,
*_p=(char *)malloc(num);
和 str=(char *)malloc(num);一樣的效果
有更多的理解可以討論
C指標申請記憶體
include struct abc typedef struct abc abc void fun1 abc a,abc b void fun2 abc a main 輸出結果 12 15 如果通過指標申請記憶體的話,就需要用到指標的指標,在林銳博士的文章中提到編譯器會為每個函式的引數最乙個備份,...
記憶體與指標 動態申請記憶體
1 malloc 標頭檔案malloc.h 一維記憶體申請 型別識別符號 變數 變數名 型別識別符號 malloc sizeof 型別識別符號 陣列大小 二維記憶體申請 型別識別符號 變數 變數名 型別識別符號 malloc sizeof 型別識別符號 陣列行大小 for int i 0 i 陣列行...
指向指標的指標申請動態記憶體
在 高質量c程式設計指南 中,提到了如果函式的引數是乙個指標,那麼別指望它能申請動態記憶體。如下 include include void getmemory char p,int num int main void getmemory char p,int num 最後的輸出的stu的結果是0,即...