返回介绍

6.2.3 指针变量的解引用

发布于 2025-04-11 22:32:59 字数 1041 浏览 0 评论 0 收藏 0

前面已经介绍过了解引用运算符,由于指针变量中保存的是内存地址,因此可以对指针变量使用解引用运算符来访问或修改该内存地址处的对象。通过对指针变量进行解引用后,就可以像使用普通变量一样来访问和修改对象的内存空间数据。例如:

第三行语句中,通过指针解引用访问到了变量 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。