C 數值交換

2021-07-04 18:33:31 字數 845 閱讀 1841

int main()

void swap(int *a,int *b)

執行結果圖:

除了指標之外,還可以使用引用

int main()

void swap(int &a,int &b)

交換數值不用直接用實參x1、x2,如

int main()

void swap(int a,int b)

{ cout

i=a;

a=b;

b=i;

cout

輸出結果為:

返回主函式中的x1,x2並沒有交換數值。

這是因為計算機中,變數存放在記憶體中,記憶體都有乙個位址,指標就是指向記憶體的位址的,如果把指標作為實參進行傳遞,也就是把記憶體位址傳了過去,那麼操作這個指標所指向的記憶體塊,必然會改變這個記憶體的內容了。

而如果不是傳指標也不是傳引用的話,而是普通的變數傳遞,則不會改變記憶體內容,因為普通變數作為引數時,其實是在記憶體塊中新申請了一塊空閒塊,不是原來的記憶體塊,而函式呼叫完畢之後,這塊新申請的記憶體塊會由於變數的作用域失效而被系統**。

數值變數交換常用方法

echo n 臨時變數法 n num1 3 num2 6 echo 交換前 n num1 num1,n num2 num2,n tmp num1 num1 num2 num2 tmp echo 交換後 n num1 num1,n num2 num2,n 臨時變數法 交換前 num1 3 num2 6...

通過位運算實現數值交換

對於數值的交換操作,通常會採用第三個變數作為中間變數過渡的交換方式。temp a a b b temp 使用這種方法,可以保證交換的準確性,但是由於會使用第三個變數,占用了額外的記憶體空間。那麼有沒有辦法不借助第三個變數實現兩個數值的交換呢?可以通過數值相加寄存和位運算兩種方式。1 相加寄存 可以將...

數值交換的幾種方法

1 最簡單 最標準的一種方法,建立乙個臨時變數 int main 2 在不建立臨時變數的情況下交換兩個數的值 1 通過加減乘除的方法交換數值 define crt secure no warnings 1 include 交換兩個數的內容 int main 由於int定義整型變數,佔四個位元組。它定...