一个大多数C语言入门书都有的一个代码示例:
//pointer.c
#include<stdio.h>
int *p;
int a=10;
int main(){
printf("The address of a is:%p\n",&a);
printf("The value of a is:%d\n",a);
p=&a;//使p指向a
printf("The value of p is:%p\n",p);
printf("The value of *p is:%d\n",*p);
*p=100;
printf("The value of *p is:%d\n",*p);
printf("The value of a is:%d\n",a);
return 0;
}
首先看一下执行的结果:
这是在某台win7 32位机器上,dev c++的输出

不同机器的输出都可能不同。但是,我们可以发现:
一开始,a=10
然后,执行p=&a后,也就是把a的地址赋值给p。这个操作,我们一般说:使p指向a。
此时,*p就是取p号地址的数值,也就是a的数值。
我们把*p修改为100,由于p=&a,*p=*(&a)=a,也就是把a修改为100。
也就是说,通过*p,我们间接把a的数值修改为100
运算符*称作间接运算符。