本节书摘来自异步社区《指针的编程艺术(第二版)》一书中的第1章,第1.1节,作者 蔡明志,更多章节内容可以访问云栖社区“异步社区”公众号查看
指针的编程艺术(第二版)
1-1 变量
1-2 一维数组
1-3 二维数组
1-4 结构
1-5 练习
当程序定义一个变量时,编译程序根据其数据类型分配适当大小的内存给它,以便存储数据。这就如同地址一般,邮差根据收件人的地址,将信件投入正确的信箱。
程序以变量名称代表某一事项,就好比每一个人都有姓名一般。如果有人喊“蔡明志”,那我一定会说“到”,因为这个名字就代表我的意思。我们就从变量开始谈起。请参阅范例address-3。
范例address-3
输出结果

程序中有关x、y、z变量的地址,如下图所示。
如果你想要知道变量所在内存的地址,只要在变量前加上地址运算符(&)即可。我们一定要确实了解每一表达式(expression)所表达的意思是什么,是变量所在的内存地址(address),还是变量值(value)。
如果要使用scanf函数,从键盘输入数据给一个变量,需要注意哪些问题呢?我们以范例address-5来说明。
范例address-5
利用scanf函数,从键盘输入数据给变量,要特别注意的是,scanf函数的参数是要赋值变量的地址,因此,会用到地址运算符(&)。这好比邮差一定要根据收件人的地址,才能将这封信放到收件人的信箱。这么打比方,是希望你能更好地了解地址的概念。程序中变量x与y的数据类型是double,所以其对应的格式都是%lf。
在此要特别提醒读者的是,本书所输出的内存地址会与你所得到的结果不同,因为我们使用不同的计算机设备。使用地址的目的是让你了解变量存储位置。