试着传递指向变量的指针

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

试着传递指向变量的指针 - 图1

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

试着传递指向变量的指针 - 图2

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

指针让存储器易于共享

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

既然你知道了使用指针修复go_south_east()函数的理论,是时候看看如何操作了。

这里没有蠢问题

问:我在自己的机器上打印出了变量的单元号,但它不是4 100 000。是不是哪里做错了?

:你没有做错,在不同机器中,程序用来保存变量的存储器单元号不同。

问:为什么局部变量保存在栈里,而全局变量保存在其他地方?

:局部变量和全局变量的用法不同。你永远只能得到一份全局变量,但如果写了一个调用自己的函数,就会得到同一个局部变量的很多个实例。

问:存储器中的其他区域是用来做什么的?

:你会在本书的后续章节中看到它们的作用。