if(*a>*b) swap(a,b);} 语句前面加*,是对a和b两个指针变量的值得大小做比较(比较的是变量值,而不是变量地址),如果a>b为真,则调用swap函数,调用时的把实参a和b(的值)传给形参x1和y1。
而在void swap(int*x1,int*x2)中,加了*是表示把x1和x2定义为指针变量,在下面的语句中,起到把X1和X2的值(而不是地址)互换的作用,所以t=*x1; *x1=*x2; *x2=*x1语句中加*.
一般说,加*是表示该变量的值,不加*是表示该变量指向的地址。实参表中是不能加*的。
回答完毕。
这个应该要加“*”,因为你的swap函数的两个实参是整型变量而不是指针变量,而你在调用swap函数的时候传递的是一个指针地址(加*的是代表传送放在指针地址里那个数,而不加*的指的是传送一个指针地址)。不然你去试编译一下绝对出错。
a、b本身是int型的,作为参数传入swap是没问题的,关键看你swap函数用这两个值干嘛,加*表示把指针a所指的值传入函数,不加*表示把指针a的值即所指向的地址传入swap函数
加*是指向指针所指对象,不加就是一个地址值。
那么这个swap函数应该是要交换的是两个变量的值了吧。你这题目写的是 swap(a,b) ,交换两个指针的地址值?我晕~~~~~~~题目没错吧?