在C中有两个关于指针的运算符:
&运算符:取地址运算符,&m即是变量m的地址。
*运算符:指针运算符,*p表示其所指向的变量。
[例6-2]从键盘输入两个整数,按由大到小的顺序输出。
main()
{
int*p1,*p2,a,b,t;/*定义指针变量与整型变量*/
scanf("%d,%d",&a,&b);
p1=&a;/*使指针变量指向整型变量*/
p2=&b;
if(*p1<*p2)
{/*交换指针变量指向的整型变量*/
t=*p1;
*p1=*p2;
*p2=t;
}
printf("%d,%d\n",a,b);
}
在程序中,当执行赋值操作p1=&a和p2=&b后,指针实实在在地指向了变量a与b,这时
引用指针*p1与*p2,就代表了变量a与b。
运行程序:
RUN
3,4
4,3
在程序运行过程中,指针与所指的变量之间的关系如图6-4所示:

当指针被赋值后,其在内存的安放如a),当数据比较后进行交换,这时,指针变量与所指向的变量的关系如b)所示,在程序的运行过程中,指针变量与所指向的变量其指向始终没变。
下面对程序做修改。