函式引數的值傳遞和位址傳遞

2021-07-28 04:00:12 字數 1006 閱讀 6669

利用乙個小例子說明,見**。

#includevoid f1(int *pp)

void f2(int **pp)

//以上函式中,接收資料的參量都是pp,而不會是*pp或者**pp

int* f3(int *pp)

int main(void)

; p = a;

printf("1--------%d\n", *p);//開始值為4

f1(p);

printf("2--------%d\n", *p);//4

//由於只是傳值,在子函式f1的內部改變複製品的值,並不會改變原品p的值

//可以理解為用兩個變數指向同乙個位址,即形參pp和實參p指向同乙個位址

//其中形參pp++,另外乙個實參p並不會受影響

//但是可以修改指標所指的值,如f1**中將a[1]的值改為9;

printf("2`-------%d\n", a[1]);//9

f2(&p);

printf("3--------%d\n", *p);//9

//傳址,pp=&p(指標的位址,即pp是指向指標的指標),*pp=*(&p)=p;

//如果要修改指標p,則應該傳入指標p的位址(&p),此時進行*pp++操作,其實是對實參指標p進行操作

getchar(); getchar();

return 0;

}//此時在子函式中進行*操作後可以獲得原來指標,而不是原來指標的複製品,之後可以根據需要修改指標。

//或者,將返回值型別改為指標型別,然後返回修改後的指標,給原來主函式的指標,如f3函式,此時在主函式中需要新增p=f3(p)**。

#include #include #include/*void getmemory(char **p)

int main()

*/char* getmemory(char *p)

int main()

C語言中函式引數傳遞的方式 值傳遞,位址傳遞

值傳遞 將實參的值複製至形參的相應儲存單元中,實參與形參占用不同儲存單元,單向傳遞 即指向實參的儲存單元,形參和實參占用相同的儲存單元 引用傳遞 c 中主要內容 1 c語言中位址傳遞實參的方法 2 多函式巢狀傳遞實參的方法,二維指標 3 陣列作為函式引數,而不改變陣列的值,可以複製陣列內容再進行修改...

C 函式的引數傳遞方式1(值傳遞與位址傳遞)

using system namespace class1 c 位址傳遞引用,實際引數會變化 int ex new int 4 console.writeline before foreach var item in ex item dou ex console.writeline nend for...

C 函式位址傳遞和值傳遞區別

目錄 c 位址傳遞和值傳遞區別 1 位址傳遞vs值傳遞 2 演示 相當於通過尋找位址 傳遞,然後 解引用,修改變數的值。void swap int p1,int p2 swap a,b 呼叫值傳遞 之間進行形參內部的值的改變,不會改變實參,只會影響形參。相當於在函式內部做了賦值的操作。void sw...