新聞中心
c語言 用指針實現兩個數的交換
int swap(int *a,int *b)//a與b分別復制主函數x與y的值,即a與x的指向相同,b與y的指向相同
成都一家集口碑和實力的網站建設服務商,擁有專業(yè)的企業(yè)建站團隊和靠譜的建站技術,十多年企業(yè)及個人網站建設經驗 ,為成都超過千家客戶提供網頁設計制作,網站開發(fā),企業(yè)網站制作建設等服務,包括成都營銷型網站建設,品牌網站設計,同時也為不同行業(yè)的客戶提供成都網站設計、成都網站建設、外貿網站建設的服務,包括成都電商型網站制作建設,裝修行業(yè)網站制作建設,傳統(tǒng)機械行業(yè)網站建設,傳統(tǒng)農業(yè)行業(yè)網站制作建設。在成都做網站,選網站制作建設服務商就選創(chuàng)新互聯建站。
{
int *t;
{t=a;a=b;b=t;}//通過交換,a和y的指向相同,b與x的指向相同,但是,x與y沒有改變原來指向,這樣函數swap結束,a與b消失,輸出結果不變
}
換成
int t;
{t=*a;*a=*b;*b=t;}//將改變x和y指向的地址的值,達到交換目的
關于C語言交換兩個數(有關指針)
在C語言中,通過函數參數傳遞,進行兩個數的交換,必須采用傳遞指針的方式,同時,在函數中,一定要對兩個指針中的數據內容進行交換才能達到交換實參地址中數據的目的。
如:
//正確的交換函數
void?swap1(int?*p1,int?*p2)
{
int?p;
p=*p1;?//通過*引用地址中的數據,進行交換
*p1=*p2;
*p2=p;
}
//錯誤的交換函數
void?swap2(int?*p1,int?*p2)
{
int?*p;?
p=p1;?//這里進行改變的是形參的值,而形參只是實參的一個副本,形參本身的變化,是不能改變實參的值的?。?
p1=p2;
p2=p;
}
PS:要正確認識C語言中的實參與形參,形參在使用中只是實參的副本,若形參是指針,我們可以通過形參改變實參地址中的內容,但無法改變實參本身的值!
c語言 編一程序 交換兩個變量的值(用指針做函數參數)
#include stdio.h??
void Swap(int a,int b)
{
int tmp = a;
a = b;
b = tmp;
printf("a=%d,b=%d\n",a,b);
}
int main()
{
int a = 5;
int b = 10;
printf("a=%d,b=%d\n",a,b);
Swap(a,b);
printf("a=%d,b=%d\n",a,b);
return 0;
}
擴展資料:
形參和實參的特點
1、形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數后則不能再使用該形參變量。
2、實參可以是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。
3、實參和形參在數量上,類型上、順序上應嚴格一致,否則就會發(fā)生類型不匹配的錯誤。
4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參值發(fā)生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發(fā)生在形參上的改變實際上也發(fā)生在實參變量上。
參考資料:
百度百科-形參
c語言指針值交換小弟求解!!!
因為指針a b是指向指針p q的,所以寫成a b的時候只是單純的指向p q它們所在的地方,而不是指向 i j的地方,也就相當于指針p q換了個位置,使得a指向q也就指向j,b指向p也就指向i,但是i,j自己的值并沒有變化。那么void swap(int *a,int *b)函數對應的swap(p,q);的值是5,3。但是因為:只是p和q交換了位置,自己本身,但是沒有牽扯到它們所指的地址,也就是p還是指i,q還是指j。
所以最后*p,*q這兩個指針所指的值還是3,5。
文章題目:c語言交換值的函數指針 c語言利用指針實現交換兩個變量的值
標題路徑:http://www.dlmjj.cn/article/dococdh.html