在学过编程语言之后,我们都知道访问一个变量的数据两种方式。一种是通过直接变量名进行访问,另一种,自然而然的是通过地址,也就是指针来进行访问数据。相信很多同学在接触指针的时候,会和变量之间产生困扰,因此觉得指针难懂,很搞脑筋,今天我就对指针和变量之间的关系和相关原理进行介绍,希望可以给予一些些在理解上的帮助。
当我们定义一个变量时,计算机会为该变量定开辟一段空间,此时,变量本身也被赋予了一定的含义,也就是变量数据存储单位的直接地址。相对应的,指针变量,也是一个地址,所不同的是变量地址所具有的内容直接是数据,而指针变量所具有的内容是一个地址值。
程序在编译时,是将我们所定义变量的代码转化成一个相对地址,指令,则通过相对地址以直接寻址的方式找到数据,并进行相关的运算。因此计算机所得到的指针的值,只是一个地址值,是无法参与数据间运算的(指针本身的运算方式除外)。因此通常,我们会用到*,即取值,进一步发出取值指令,而获取到我们想要的数据。而&则恰好相反,是将数据回退到地址。
记住变量是直接寻址,而指针是间接寻址,结合计算机组成原理的知识,就可以更清晰的理解,变量和指针变量的关系啦。