bool Widget::swap(int a, int b) { int temp =a; a= b; b = temp; }
这种方式其实是没有改变的ab两个参数的值的,只有在函数里面,ab的值是改变的,但是在函数外面,ab的值还是没有改变的
bool Widget::swap_point(int *a, int *b) { int temp = *a; *a = *b; *b = temp; }
这样才是改变了ab的值
另外 ,交换两个数的值,大致应该有一下三种方式,注意,这里的形参都是指针(或引用)。
第一种,带有第三个变量的
bool Widget::swap1(int*a,int*b)//第一种,也是最常用的一种 { intt; t=*a; *a=*b; *b=t; }
第二种,好像记得回存在数据溢出问题,没有验证过
bool Widget::swap2(int*a,int*b)//第二种,不需要额外的内存空间(不用临时变量) { *a=*a+*b; *b=*a-*b; *a=*a-*b; }
第三种,位运算
bool Widget::swap3(int*a,int*b)//第三种,不需要额外的内存空间,位运算实现 { *a^=*b; *b^=*a; *a^=*b; }
欢迎补充。。。。