指针变量存放的是地址,使用指针变量作为参数时传进来的也是地址。只有在获取地址的情况下对元素进行操作,才能真正地修改变量。
因此,在使用参数为指针的函数来交换两个数的值时,应该写成下面这种形式
void swap(int*a,int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
下面的几种写法都是错误的
//错误写法一
void swap(int*a,int* b)
{
int* temp = *a;
*a = *b;
*b =* temp;
}
temp没有初始化,存放的地址是随机的,如果指向的是系统工作区间就容易出错
//错误写法二
void swap(int*a,int* b)
{
int* temp = a;
a = b;
b = temp;
}
误认为直接把地址交换之后元素就交换了,但是函数参数的传送方式是单项一次性的,main函数传递给swap函数的地址其实是一个无符号整型的数,也只是值传递
但是可以通过指针的引用来实现
void swap(int* &a,int* &b)
{
int* temp = a;
a = b;
b = temp;
}