学过C语言的老司机都知道,指针就是一个变量,用于存储另一个变量的内存地址。
那么什么是变量呢?在现代计算机体系结构中所有的需要执行的信息代码都需要存储在内存中,为了管理存储在内存的数据,内存是划分为不同的区域的,不同区域都用内存地址来标识。一个典型的内存地址是个16进制的8位数(一个字节)比如0xAFFFF(这是一个内存地址的十六进制表示)。
要访问数据,我们需要知道它的存储地址。我们可以跟踪存储与我们的程序相关的数据的所有内存地址。但是要记住这些内存地址,非常费劲,怎么办呢?
于是我们引入了变量的概念。变量只是给存储数据的内存地址的好记得别名。指针也是一个变量。但它是一种特殊的变量,因为它存储的数据不仅仅是一个普通的值,如简单的整数或字符串,而是另一个变量的内存地址。
在上面的图中,指针p包含变量a的地址值0x0001。
The of a pointer is nil. That means any uninitialized pointer will have the value nil. Let's see a complete example -
package main
import "fmt"
func main() {
var p *int
fmt.Println(