變數交換的幾種演算法 算術運算 指標操作 位運算

2021-05-23 05:02:38 字數 921 閱讀 5395

學習程式語言和程式設計的時候,交換兩變數的值是經常用到的。以下總結了幾種交換變數的方式。

標準演算法:

定義中間變數交換

int a,b,t;

a=10; b=15;

t=a; a=b; b=t;

算術運算:

通過+和-

運算來實現

int a,b;

a=10;b=12;

a=b-a;   //a=2;b=12

b=b-a;   //a=2;b=10

a=b+a;   //a=12;b=10

指標操作:

實際上進行的是整數運算

int *a,*b;   

a=new int(10);        //給指標賦值

b=new int(20);        //a=0x00030828,b=0x00030840

a=(int*)(b-a);        //a=0x00000006

b=(int*)(b-int(a));   //b=0x00030828

a=(int*)(b+int(a));   //a=0x00030840

異或運算也能實現變數的交換

注:只有第一句是兩個指標之間的計算,其他都是指標和整數的計算,否則會導致計算錯誤,嚴重導致系統出錯。

位運算:

int a=10,b=12;  //a=1010^b=1100;

a=a^b;    //a=0110^b=1100;

b=a^b;    //a=0110^b=1010;

a=a^b;    //a=1100=12;b=1010;

從上面可以看出,數學中的小技巧對程式設計而言具有相當的影響力,運用得當會有意想不到的神奇效果。而從實際的軟體開發看,標準演算法無疑是最好的,能夠解決任意型別的交換問題。

指標的算術運算

指標可以加上或減去乙個整數的算術運算。首先來看個例子 include int main void short st 3 double pw wa short ps st 0 cout pw 分析上面的程式,我們可以看到,c 一般把陣列名和第乙個元素的位址等價,所以我們可以用上面的兩種方法初始化指標,...

指標的算術運算

指標和陣列 指標和陣列在c語言中有錯綜複雜的聯絡。在前面的課程中,你學會了如何宣告陣列變數 int anarray 5 declare array of 5 integers 關聯陣列實際上是指標,指向陣列的第乙個元素!因為陣列變數 是指標,你可以解析它 它返回 陣列元素0 123 4567 int...

指標的算術運算

指標的算術運算 c語言允許你在指標執行整數的加減運算。如果pnptr指向乙個整數,pnptr 1 pnptr後在記憶體中的位址的下乙個整數。pnptr 1是在pnptr以前的整數字址。請注意,pnptr 1不在pnptr返回位址,但下乙個物件,pnptr分型。如果pnptr指向乙個整數 假設4位元組...