c語言實現交換兩個數的值

來源:互聯網
上載者:User

標籤:

C語言中要實現交換兩個數的值,可以有很多種方法,具體如下所述。

不使用中間變數:

 1 // 異或, a^=b^=a^=b; 2 a ^= b; 3 b ^= a; 4 a ^= b; 5  6 // 加減 7 a = a + b; 8 b = a - b; 9 a = a - b;10 11 // 乘除12 a = a * b;13 b = a / b;14 b = a/ b;

使用中間變數:

1 // 需臨時空間2 temp = a;3 a = b;4 b = temp;

 

正如你所想的那樣,上面所示代碼只是描述了交換兩個數的值的思想,在你實際使用時,還有諸多地方需要注意。你可以選擇宏來實現,亦或函數是實現,下面就一一為你道來。

宏實現:

1 #define swap(a, b) 2     (a) ^= (b); 3     (b) ^= (a); 4     (a) ^= (b)

註:宏實現主要針對不使用中間變數就完成交換兩個數的值,上述代碼只描述了異或,其他以此類推。

函數實現:

 1 // 錯誤實現 2 void swap(int a, int b) 3 { 4     int temp = 0; 5     temp = a; 6     a = b; 7     b = temp; 8  9     return;10 }11 12 // 正確實現13 void swap(int *a, int *b)14 {15     int temp = 0;16     temp = *a;17     *a = *b;18     *b = temp;19 20     return;21 }

註:函數實現對使用中間變數和不使用中間變數都適用。

 

分析:

錯誤實現是由於a與b為形式參數,在函數內部實現了交換,但是對外部實參是沒有影響的,真正的能夠實現交換兩個數值是正確實現所示那樣,由於形參為兩個指標,指標就是地址,在交換的時候是把兩個地址中的值進行了交換,當函數運行結束,就實現兩個數值的交換了。

c語言實現交換兩個數的值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.