文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
试着传递指向变量的指针
如果传递的是变量
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论