通过指针交换两个变量的值
(1)错误示例1
a,b的值不会改变,因为在子函数Swap中a和b的数值进行了交换,但是子函数数据中的改变不会影响到父函数
void Swap_error1(int a,int b)
{int tmp=a;a=b;b=tmp;
}
int main()
{int a=10;int b=20;Swap_error1(a,b);printf("%d,%d\n",a,b);return 0;
}
(2)错误示例2
尽管使用了指针,a,b的值依旧不会改变。因为这里仅仅是在Swap函数中交换了指针p1和p2所表示的地址,而a的地址还是原来的地址,所存储的值也还是10,b也是同样的。
void Swap_error2(int *p1,int *p2)
{int *tmp=p1;p1=p2;p2=tmp;
}
int main()
{int a=10;int b=20;Swap_error2(&a,&b);printf("%d,%d\n",a,b);return 0;
}
(3)错误示例3
程序运行会出现警告,存在无法访问的指针
void Swap_error3(int *p1,int *p2)
{int *tmp;*tmp=*p1;*p1=*p2;*p2=*tmp;
}
int main()
{int a=10;int b=20;Swap_error3(&a,&b);printf("%d,%d\n",a,b);return 0;
}
(4)Swap函数
通过指针交换a,b的地址,设置一个中间量tmp,先将p1所存储的值赋予tmp;p2的值赋予p1;tmp的值赋予p2;使得子函数中数据变动影响到父函数
void Swap(int *p1,int *p2)
{int tmp;tmp=*p1;//tmp=a;*p1=*p2;//a=b;*p2=tmp;
}
(5)main()函数
int main()
{int a=10;int b=20;Swap(&a,&b);printf("%d,%d\n",&a,&b);return 0;
}
(6)运行结果
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
