一:無法把指標變數本身傳遞給乙個函式
函式實參接收的實際是乙個指標變數(p)的複製,如p_copy,而非指標變數本事,通過p_copy可以改變p指向的變數的值,而不能改變p本身的值。
eg:(參考c語言深度解析4.6.2.2)
#include
#include
void getmemory(char *p,int num)
int main(void)
在執行strcpy(str,」hello」)時出錯,因為str仍然指向null,申請的記憶體實際是給了str_copy.這個是由編譯器分配**的,那如何給str申請記憶體呢,可以使用二級指標(改變指標變數的值)。
如下例:
#include
#include
void getmemory(char **p,int num)
int main(void)
二:鍊錶中使用二級指標
如果想要在函式裡修改一級指標的指向,就需要用二級指標,間接修改一級指標的內容。
唯讀操作,不改變一級指標的內容,用一級指標就可以了 。
函式間一級指標是值傳遞,不能改變形參的值
二級指標的使用
有時候,我們需要在函式體的內部申請記憶體空間並初始化,然後將內部申請的儲存空間交付給外部指標來引用,這時候,我們可以使用二級指標作為申請空間的函式的引數來實現。main.c檔案 include include include pragma pack push,1 typedef struct use...
為什麼使用二級指標
設計乙個函式 void find1 char array,char search,char pa 要求 這個函式引數中的陣列array是以 0值為結束的字串,要求在字串array中查詢與引數search給出的字元相同的字元。如果找到,通過第三個引數 pa 返回array字串中首先碰到的字元的位址。如...
二級指標的使用例項
main函式將乙個空指標的位址 二級指標 傳入多個子函式,每個子函式都需要新增新節點,形成鍊錶,要求不改變首節點所指向的位址,typedef struct id node t id node t void test1 id node t p else return void test2 id nod...