试着传递指向变量的指针
如果传递的是变量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。是不是哪里做错了?
答:你没有做错,在不同机器中,程序用来保存变量的存储器单元号不同。
问:为什么局部变量保存在栈里,而全局变量保存在其他地方?
答:局部变量和全局变量的用法不同。你永远只能得到一份全局变量,但如果写了一个调用自己的函数,就会得到同一个局部变量的很多个实例。
问:存储器中的其他区域是用来做什么的?
答:你会在本书的后续章节中看到它们的作用。