返回介绍

试着传递指向变量的指针

发布于 2024-10-10 23:21:23 字数 903 浏览 0 评论 0 收藏 0

如果传递的是变量

latitude 和 longitude 的地址,而不是它们的值,会怎么样?如果变量 longitude 位于存储器栈 4 100 000 号单元,当把 4 100 000 这个单元号作为参数传递给 go_south_east() 函数会发生什么?

如果告诉 go_south_east() 函数 latitude 的值位于 4 100 000 号单元,它不仅能找到 latitude 当前的值,而且还能够修改原 latitude 变量中的内容。函数所需要做的就是读取和更新存储器 4 100 000 号单元的内容。

因为 go_south_east() 函数更新了原 latitude 变量的值,计算机就能在返回 main() 函数后打印出更新后的坐标。

指针让存储器易于共享

使用指针的主要原因之一就是让函数共享存储器。一个函数可以修改另一个函数创建的数据,只要它知道数据在存储器中的位置。

既然你知道了使用指针修复 go_south_east() 函数的理论,是时候看看如何操作了。这里没有蠢问题问:我在自己的机器上打印出了变量的单元号,但它不是 4 100 000。是不是哪里做错了?答:你没有做错,在不同机器中,程序用来保存变量的存储器单元号不同。问:为什么局部变量保存在栈里,而全局变量保存在其他地方?答:局部变量和全局变量的用法不同。你永远只能得到一份全局变量,但如果写了一个调用自己的函数,就会得到同一个局部变量的很多个实例。问:存储器中的其他区域是用来做什么的?答:你会在本书的后续章节中看到它们的作用。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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