漫談C指標第十講 引數的位址傳遞

2021-07-05 03:07:23 字數 769 閱讀 1410

看考題二的**:

#include "stdio.h"

void exchg2(int

*px, int

*py)

main()

它的輸出結果是:

*px = 6, *py = 4.

a = 6, b = 4.

函式的介面部分:exchg2(int *px, int *py),請注意:引數px、py都是指標。

再看呼叫處:exchg2(&a, &b);

px = &a;

py = &b;

px = &a; /* ← */

py = &b; /* ← 請注意這兩行,它是呼叫exchg2的隱含動作。*/

int tmp = *px;

*px = *py;

*py = tmp;

printf("*px =%d, *py = %d.\n", *px, *py);

這樣,有了頭兩行的隱含賦值操作。我們現在已經可以看出,指標px、py的值已經分別是a、b變數的位址值了。接下來,對* px、* py的操作當然也就是對a、b變數本身的操作了。所以函式裡頭的交換就是對a、b值的交換了,這就是所謂的位址傳遞!!!!(傳遞a、b的位址給了px、py),你現在明白了嗎?

c指標作為引數傳遞以及指標的指標

函式引數傳遞的只能是數值,所以當指標作為函式引數傳遞時,傳遞的是指標的值,而不是位址。include stdio.h void pointer int p int main 輸出結果 the b address 28ff3c the p is point to 0028ff3c addr is 28...

C語言 函式 位址和指標 值傳遞和位址傳遞的區別

函式呼叫中,實參的資料和形參對應傳遞,有兩種傳遞方式 1.值傳遞 只傳送值,實參不做改變 2.位址傳遞 傳送位址,實參被改變 include void swap int int intmain void void swap int a,int b void 沒有返回引數 結果 1 x 10 y 20...

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

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