1. 關於c語言交換兩個數(有關指針)
在C語言中,通過函數參數傳遞,進行兩個數的交換,必須採用傳遞指針的方式,同時,在函數中,一定要對兩個指針中的數據內容進行交換才能達到交換實參地址中數據的目的。
如:
//正確的交換函數
voidswap1(int*p1,int*p2)
{
intp;
p=*p1;//通過*引用地址中的數據,進行交換
*p1=*p2;
*p2=p;
}
//錯誤的交換函數
voidswap2(int*p1,int*p2)
{
int*p;
p=p1;//這里進行改變的是形參的值,而形參只是實參的一個副本,形參本身的變化,是不能改變實參的值的!!
p1=p2;
p2=p;
}
PS:要正確認識C語言中的實參與形參,形參在使用中只是實參的副本,若形參是指針,我們可以通過形參改變實參地址中的內容,但無法改變實參本身的值!
2. c語言用指針交換兩個數的值
假設pa原本指向內存單元a,
pb原本指向內存單元b,
自然而然,交換之後pa指向內存單元b,
pb指向內存單元a,
那麼pa對應的值就變成了b原來的值,
pb對應的值也就變成了a原來的值,
3. c語言指針交換兩個變數的值
swap函數,看到temp=*x可知入參是*x和*y,是兩個變數的地址
scanf參數是變數的地址,需要&取地址
p_a表示a的地址指針,因此 &a
輸出就是printf
4. 5、使用C語言編寫一個函數,用於交換兩個變數的值(地址傳遞)。
不知道你要交換的兩個變數類型,所以這里以整型數據交換為例,以下swap函數實現了交換兩個整型變數值的功能:
#include<stdio.h>
//交換給定指針指向整型變數的值。
//參數:
// a->指向第一個變數的指針
// b->指向第二個變數的指針
voidswap(int*a,int*b);
intmain(intargc,intargv)
{
inta=3,b=5;
printf_s("交換前:a=%d,b=%d ",a,b);
swap(&a,&b);
printf_s("交換後:a=%d,b=%d ",a,b);
return0;
}
//交換給定指針指向整型變數的值。
//參數:
// a->指向第一個變數的指針
// b->指向第二個變數的指針
voidswap(int*a,int*b)
{
//聲明一個臨時變數,保存第一個指針指向變數
//的值。
//其中*a是取出a指針指向變數的值
inttemp=*a;
//將b指針指向的值賦值給a指針指向變數
(*a)=(*b);
//將臨時變數temp中保存的a指針指向變數的值賦值給
//b指針指向的變數。
(*b)=temp;
}
以上代碼運行結果如下:
5. 定義兩個變數ab如何用c語言編程使兩個變數的值能相互交換
C語言中交換兩個變數需要用到一個臨時變數temp。
具體按照下面給出步驟操作:
#include
<stdio.h>
void
main
()
{int
a=1,b=2,temp;temp=a;a=b;
b=temp;
printf("a=%d,b=%d\n",a,b);}
(5)c語言交換2個變數的值指針擴展閱讀:
(1)變數名在VB中是不區分大小寫的(如ABC、aBc、abc等都是一樣的)。C語言中區分大小寫。不同的語言有不同的規則。
(2)定義和使用變數時,通常要把變數名定義為容易使用閱讀和能夠描述所含數據用處的名稱,而不要使用一些難懂的縮寫如A或B2等。例如:假定正在為水果鋪編一個銷售蘋果的軟體。我們需要兩個變數來存儲蘋果的價格和銷量。
此時,可以定義兩個名為Apple_Price和Apple_Sold的變數。每次運行程序時,用戶就這兩個變數提供具體值,這樣看起來就非常直觀。具體方法是:通過用一個或多個單片語成有意義的變數名來使變數意義明確。例如,變數名SalesTaxRate就比Tax或Rate的意義明確得多。
(3)根據需要混合使用大小寫字母和數字。一個合理協議是,變數中每個單詞的第一個字母大寫,例如:DateOfBirth。
(4)另一個合理協議是,每個變數名以兩個或三個字元縮寫開始,這些字元縮寫對應於變數要存儲數據的數據類型。例如,使用strName來說明Name變數保存字元串型數據。
參考資料來源:搜狗網路-C語言
6. c語言 編一程序 交換兩個變數的值(用指針做函數參數)
#include <stdio.h>
void Swap(int a,int b)
{
int tmp = a;
a = b;
b = tmp;
printf("a=%d,b=%d ",a,b);
}
int main()
{
int a = 5;
int b = 10;
printf("a=%d,b=%d ",a,b);
Swap(a,b);
printf("a=%d,b=%d ",a,b);
return 0;
}
(6)c語言交換2個變數的值指針擴展閱讀:
形參和實參的特點
1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數。
2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。
3、實參和形參在數量上,類型上、順序上應嚴格一致,否則就會發生類型不匹配的錯誤。
4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參值發生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上。
網路-形參
7. C語言指針使用函數交換兩個變數的值
這個地方會出現不好理解的東西。
調用函數的時候,你放入了int
a
int
b
但是這其實不是你的main函數中的a
b只是相當於他們的副本,也就是復制了一個a
和b
傳入函數
所以你改變的只是傳入的副本
也就是復制的副本a
b所以在main函數中列印的ab不會出現變化
依然是a=3,b=6
現在回答第二個問題,怎麼會讓ab的值變化:傳入指針,也就是在main函數中使用a
b的指針,然後吧指針傳入到函數裡面
這個時候ab就會真正的發生變化,因為指針指向的是ab的物理地址,也就是真正的ab,不是副本,這個時候就會改變ab的值。想要理解,可以去網路傳值參數和引用參數。純手打,望採納