程序1:
定义int型变量 x,y,int型指针p1,p2 ;x和y分别赋值为100和200 ; p1指向x,p2指向y ;利用指针,计算x ,y的和
#include <stdio.h>
int main()
{
int x=100,y=200,*p1=&x,*p2=&y;
printf("x和y的和是:%d",*p1+*p2);
return 0;
}
分析:程序中 *p1=&x : 即 直接声明指针p1,并且赋值;
等价于 :先声明后赋值 int *p1 , p1=&x;
程序2:
#include <stdio.h>
int main()
{
int *p1,*p2,*p,a=10,b=20;
p1=&a;
p2=&b;
if(a<b)
{
p=p1;
p1=p2;
p2=p;
}
printf("a=%d,b=%d\n",a,b);
printf("最大值=%d,最小值=%d\n",*p1,*p2);
return 0;
}
分析:在这里,内存空间段 1 上 为 p1,p2 , p 分配内存,内存空间段2上为 a , b 分配内存,
程序运行之后,a , b 本身的值并未发生改变,只是p1 , p2 的指向地址交换了。
运行结果: