利用乙個小例子說明,見**。
#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...