运用代码解释指针运用的理解如下:
#include
using namespace std;
int fun1 (int a,int b)
{
int c;
c=a;a=b;b=c;
void swap(int *xx,int *yy)
{
int temp;
temp=*xx;
*xx=*yy;
*yy=temp;
}
上面这种才可以。
你的两个方法中,第一种方法,虽然参数是指针,但是作为参数的指针也还是临时复制的,你在方法里互换操作的是临时指针而不是指针指向的内容
第二种方法,参数是两个int变量,但作为参数这两个变量只是临时复制了一份,操作这两个复制的临时值并不能改变本体。
C语言转换变量的值,并不是直接转换,而是通过反复赋值进行值的覆盖;有三种转换方式,传值,传址,传引用。如果不用指针,将b值符给a后,a,b的值是一样的,a值的储存地址不变,输出时还是a值;而用指针后,通过指针指向地址,可进行地址层面的转换,输出电脑以为的a时,其实是b的地址上的b值才将两个变量的值完全交换,此为传址转换。
第一种:地址引用交换,这样xx和yy交换后原先的x,y变量的值同时也就交换了。
第二种:直接交换,这样交换后只是在swap中进行了交换,也就是xx和yy的值交换了,不影响x和y的值。
因为给函数参数分配的空间是临时的 用完就被回收了。