文登住房与建设局网站今日新闻国际头条新闻
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。