在c語言中實參和形參之間的資料傳輸是單向的「值傳遞」方式,也就是實參可以影響形參,而形參不能影響實參。指標變數作為引數也不例外,但是可以改變實參指標變數所指向的變數的值。
#include void swap1(int x,int y),swap2(int *px,int *py),swap3(int *px,int *py);
int main(void)
void swap1(int x,int y)
void swap2(int *px,int *py)
void swap3(int *px,int *py)
結果:
第乙個swap1函式執行結果是:x=2 y=1.但是第乙個函式的形參是(int x,int y),實參是(int a,int b)。因為實參可以影響形參,而形參不可以影響實參。所以a,b的值是不變的。如圖:
第二個swap2函式由圖可知,pa和px都是a的位址,pb和py都是b的位址。此函式改變*px,*py的值。因為*px和a在同一儲存單元,*py和b在同一儲存單元。以改變實參指標變數所指向的變數的值。所以如圖*pa和*pb的值也改變了,最後輸出結果也就改變了。
第三個swap3同樣的道理,如上圖直接改變了形參指標px和py的值,改變的只是位址,位址所對應的值沒有改變,又因為形參是不會影響實參,所以pa和pb沒有改變。所以a,b值沒有改變。
指標作為函式引數,C語言指標作為函式引數詳解
include void swap int a,int b 函式宣告 intmain void void swap int a,int b 大家想一下,執行這個程式是否能互換 i 和 j 的值?不能!i 還是3,j 還是5。因為實參和形參之間的傳遞是單向的,只能由實參向形參傳遞。被調函式呼叫完之後系...
C語言指標變數作為函式引數
有讀者反饋,不理解字元陣列和普通陣列的區別,下面筆者作一下解答。實際上,字元陣列和普通陣列一樣,沒有本質區別。請大家注意陣列型別的含義 資料型別指的是陣列所包含的元素的型別,而不是陣列名的型別,陣列名永遠是乙個指標,指向第乙個元素的位址,即陣列首位址。字元陣列的每個元素都是char型別,整型陣列的每...
C語言 指標變數作為函式引數詳解
在c語言中,函式的程式設計客棧引數不僅可以是整數 小數 字元等具體的資料,還可以是指向它們的指標。用指標變數作函式引數可以將函式外部的位址傳遞到函式內部,使得在函式內部可以操作函式外部的資料,並且這些資料不會隨著函式的結束而被銷毀。像陣列 字串 動態分配的記憶體等都是一系列資料的集合,沒有辦法通過乙...