看考題二的**:
#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 陣列作為函式引數,而不改變陣列的值,可以複製陣列內容再進行修改...