傳值呼叫 傳址呼叫

2021-08-04 16:33:03 字數 883 閱讀 3679

void swap(int

x, int

y)int tmp = x;

x = y;

y = tmp;

int main()

int a = 10;

int b = 20;

//printf("a=%d b=%d\n", a, b);

swap(a, b);//傳值呼叫,僅僅是傳值,其實x賦值為10,y賦值為20了,swap函式也用了,

printf("a=%d b=%d\n", a, b);//用了x為20,y為10了,但是swap函式它僅僅傳值,相當於把

system("pause");//a,b原封不動的傳了一遍,swap在結果這裡沒起什麼作用

return 0;

**對比:

int a = 10;

int* p = &a;//整形指標存放整形位址,p的位址和a的位址一樣,p就能找到a

*p = 20;//*p能找到a,給*p賦值20,a就變為了20,位址也由0000000a,變成00000014

傳址呼叫:

void swap(int* px, int*  py)//px,py都是int*型別,對應&a,&b

int tmp = 0;

tmp = *px;//交換位址就可以完全換值

*px = *py;

*py = tmp;

int main()

int a = 10;

int b = 20;

printf("a=%d b=%d\n", a, b);

swap(&a, &b);//傳址呼叫

printf("a=%d b=%d\n", a, b);

system("pause");

return 0;

傳值呼叫與傳址呼叫

眾所周知,函式的呼叫分為傳值呼叫和傳址呼叫,那他們的區別是什麼呢?傳值呼叫 函式的形參和實參分別占有不同的記憶體塊,對形參的修改不會影響實參。傳址呼叫 傳址呼叫是把函式外部建立變數的記憶體位址傳遞給函式引數的一種呼叫函式的方法。這種傳參方式可以讓函式和函式外邊的變數建立起真正的聯絡,也就是函式的內部...

函式呼叫的傳值和「傳址」

函式呼叫的傳值和 傳址 以下文字只想說明乙個問題 所有的引數傳遞都是傳值 要想通過函式改變乙個變數的值,只有將此變數的位址傳入函式。其實c語言中根本沒有傳址這一 說,所有的函式在傳遞引數時都是採用的傳值呼叫,即在呼叫時完成 實參對形參的賦值,也就是說在傳遞引數時永遠都是將實參的值傳遞給形參。形參是乙...

正確理解C C 中的傳值呼叫 傳址呼叫 引用呼叫

首先說明,函式的傳值呼叫和傳址呼叫在c和c 中都是合法的語法,但是引用呼叫就只是在c 中合法的。首先給乙個廣為人知的例子 includevoid swap int x,int y int main void 輸出結果是 a 1,b 2 a 1,b 2 沒有交換 並沒有完成交換,因為在傳參呼叫中,ma...