在引用指针变量进行间接访问时,会经常使用运算符&和运算符。
(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 分析指针变量的引用情况。
程序代码如下:(https://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的值。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。