指针的作用

指针,即指向一个变量或一个函数的地址,通过&可以对已有变量取地址,*对指针解引用找出变量对应的值

指针示意图

为什么golang中常量没有指针

因为常量不占用程序运行时的存储空间,因此没有内存地址。常量被直接嵌入到最终的可执行文件中,比如 fmt.Println(a) ,常量 a 直接被嵌入到 Println 中

为什么golang当中指针p++是不合法的

不允许 p++ 这样的指针算术操作,是为了保持语言的类型安全、简洁和内存安全。

空指针的反向引用是不合法的

1
2
3
4
5
6
7
8
package main

func main() {

var p *int = nil
*p = 0

}

因为 p 是一个 nil 指针,它没有指向任何有效的内存地址

1
2
3
var value int
p := &value // 让 p 指向 value 变量的地址
*p = 0 // 现在这是安全的,因为 p 不再是 nil,它指向了 value
1
2
p := new(int) // 分配内存,并让 p 指向这个内存地址
*p = 0 // 现在这是安全的