文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
6.2.3 指针变量的解引用
前面已经介绍过了解引用运算符,由于指针变量中保存的是内存地址,因此可以对指针变量使用解引用运算符来访问或修改该内存地址处的对象。通过对指针变量进行解引用后,就可以像使用普通变量一样来访问和修改对象的内存空间数据。例如:
第三行语句中,通过指针解引用访问到了变量 a 的内存空间,并将整型常量值 20 赋给了它,即将变量 a 的内存空间的值修改为 20。第四行语句中,再次通过指针解引用访问变量 a 的内存空间,并以 int 类型格式来获取内存空间数据,通过 printf 打印输出。其实,指针解引用的实质就是利用指针来间接地访问和修改它所指向的内存空间数据,修改过程如图 6.7 所示。
图 6.7 通过指针修改数据
编译运行程序,结果如下:
*pi = 20
我们可以将指针解引用的结果当成是一个变量的名字来使用,甚至可以对它进行自增或自减的运算:
++*pi; //等价于++a; (*pi)++; //等价于 a++; --*pi; //等价于--a; (*pi)--; //等价于 a--;
在使用后缀的自增、自减运算时,由于优先级和结合性的原因,自增、自减运算会优先于解引用运算符,因此,需要在指针解引用时,用小括号来提升它的优先级。
最后需要注意的是,星号在指针变量定义时只是一个标记,而在指针解引用时却是一个解引用运算符,千万不要混淆:
int *pi = &a; //这儿的“*”是标记符 *pi = 20; //这儿的“*”是运算符
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论