C語言函數(shù)的參數(shù)使用指針
在c語言中實參和形參之間的數(shù)據(jù)傳輸是單向的“值傳遞”方式,也就是實參可以影響形參,而形參不能影響實參。指針變量作為參數(shù)也不例外,但是可以改變實參指針變量所指向的變量的值。
#include <stdio.h>
void swap1(int x,int y),swap2(int *px,int *py),swap3(int *px,int *py);
int main(void)
{
int a=1,b=2;
int *pa=&a,*pb=&b;
swap1(a,b);
printf("s1:a=%d,b=%d\n",a,b);
a=1,b=2;
swap2(pa,pb);
printf("s2:a=%d,b=%d\n",a,b);
a=1,b=2;
swap3(pa,pb);
printf("s3:a=%d,b=%d\n",a,b);
return 0;
}
void swap1(int x,int y){
int t;
t=x;
x=y;
y=t;
}
void swap2(int *px,int *py){
int t;
t=*px;
*px=*py;
*py=t;
}
void swap3(int *px,int *py){
int *pt;
pt=px;
px=py;
py=pt;
}
結果:

第一個swap1函數(shù)運行結果是:x=2 y=1.但是第一個函數(shù)的形參是(int x,int y),實參是(int a,int b)。因為實參可以影響形參,而形參不可以影響實參。所以a,b的值是不變的。如圖:

第二個swap2函數(shù)由圖可知,pa和px都是a的地址,pb和py都是b的地址。此函數(shù)改變*px,*py的值。因為*px和a在同一儲存單元,*py和b在同一儲存單元。以改變實參指針變量所指向的變量的值。所以如圖*pa和*pb的值也改變了,最后輸出結果也就改變了。

第三個swap3同樣的道理,如上圖直接改變了形參指針px和py的值,改變的只是地址,地址所對應的值沒有改變,又因為形參是不會影響實參,所以pa和pb沒有改變。所以a,b值沒有改變。
到此這篇關于C語言函數(shù)的參數(shù)使用指針的文章就介紹到這了,更多相關C語言函數(shù)參數(shù)指針內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

