在引用指针变量进行间接访问时,会经常使用运算符&和运算符*。
(1)运算符&是取地址运算符,用于取变量的地址,将变量地址存放于指针变量中。
例如:
表示取变量n的地址赋给指针变量p1。
(2)运算符*是指针运算符,用于访问指针变量所指向的变量。
例如:
其中,*p1与n等价,可用间接方式访问n,即用*p1代表n。语句“*p1=36;”与“n=36;”等价。
执行下面的代码后,指针变量p1指向变量n。
这时,可以用以下两种方式访问变量n:
直接访问:如“printf("%d",n);”,输出“36”。
通过指针变量间接访问:如“printf("%d",*p1);”,输出“36”。
例8.1 分析指针变量的引用情况。
程序代码如下:(www.daowen.com)
程序运行结果:
【分析】执行语句“p=&m;”后,*p与m等价,所以语句“printf("%d,%d\n",m,*p);”输出了两个30。执行语句“*p=230;”后,m也是230,所以执行语句“printf("%d,%d\n",m,*p);”之后,输出了两个230。执行语句“p=&n;”之后,*p与n等价,接着执行语句“*p=780;”,n的值变为780,然后执行“printf("%d,%d\n",n,*p);”,输出了两个780。
由此可知,同一个指针变量可先后指向不同的变量,如p先后指向m与n。
例8.2 分析下列程序的运行情况。
程序代码如下:
程序运行结果:
【分析】执行语句“p1=&count;”后,count和*p1等价。执行语句“p2=&e;”后,e和*p2等价。执行语句“p3=&charact;”后,charact和*p3等价。
例8.3 使用指针变量编写:交换两个变量的值。
程序代码如下:
程序运行情况如下(假设为a和b分别输入“5”和“8”):
【分析】定义“int a,b,c,*p1,*p2;”后,可以执行语句“p1=&a;p2=&b;”,使得a与*p1等价,b与*p2等价,然后可以采用间接方式“scanf("%d,%d",p1,p2);”为a和b赋值,用语句“c=*p1;*p1=*p2;*p2=c;”来交换a和b的值,用语句“printf("%d,%d\n",*p1,*p2);”输出交换前后a和b的值。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。