赞
踩
1.指针存放是是地址,所以在用指针交换两个数的时候,需要对指针进行解引用(*p)。
用指针交换两个数,需要知道p1=p2与*p1=*p2。
p1=p1是将p2的值赋值给p1.
*p1=*p2是将p2指针地址存放的值,赋值给p1指针地址存放的值,即p1地址处存放的值为*p。
2.指针实现交换两个数的值:
- #include <stdio.h>
- void swap(int *p1,int *p2)
- {
- int tmep = *p1; //保存临时值
- *p1 = *p2; //让p1地址处存放的值变为*p2
- *p2 = tmep; //让p2地址处存放的值变为temp,即为改变时的*p1
- }
-
- int main()
- {
- int a = 10;
- int b = 20;
- swap(&a,&b);
- printf("%d %d\n",a,b);
- //int *t;
- //t = &a;
- //*t = 5;
- //printf("%d\n",a);
-
- return 0;
- }
3.运行结果:
4.总结:
在使用指针交换两个数时,需要理解,*p1=*p2是将p2指针地址存放的值,赋值给p1指针地址存放的值,即p1地址处存放的值为*p。
给指针赋值时的错误操作:int *p;*p=5;这样赋值是错误的,因为p还未被初始化指向的地址。
正确的操作:int *p,a;p=&a;*p=5;此时,p地址处存放的值为5,即a=5。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。