指针

目录

Go语言中也有指针,指针这个词其实用得不好,让人感觉他是指来指去的,反而让人迷糊搞不清楚。不如我们以后碰到 “指针” 这个词语, 就自动把它在脑子里替换成 “地址” 吧。接下来我们开始讲解。首先我们看一个例子:

请读者自动在脑子里替换为地址。

package main

import (
	"fmt"
)

func main() {
	var x = 1
	var px *int = &x

	fmt.Printf("%T, %T\n", x, px)
}

首先,指针本身并不是什么奇怪的东西,只是表示上与众不同。例如 *int 是表示 int 型的指针,实际上,有 *int 类型的变量, 不过就是一个普通变量而已,他存储了一个 int 变量的地址罢了。

Go语言中由于不能对指针进行指针运算,所以指针的内容也就只有这些了:

  • *int 表示 int 型的指针,也就是说上面的 px 这个变量,存储的是一个内存地址,而所存储的内存地址所在的那个变量,存储的是一个 int
  • &x 表示取 x 的内存地址


更多文章
  • Web开发系列(四):Flask, Tornado和WSGI
  • Web开发系列(三):什么是HTML,CSS,JS?
  • Web开发系列(二):HTTP协议
  • Web开发系列(一):从输入网址到最后,这个过程经历了什么?
  • SNI: 让Nginx在一个IP上使用多个证书
  • Haskell: infixl, infixr, infix
  • Haskell简明教程(五):处理JSON
  • Haskell简明教程(四):Monoid, Applicative, Monad
  • HTTPS 的详细流程
  • OAuth2 为什么需要 Authorization Code?
  • 任务队列怎么写?python rq源码阅读与分析
  • XMonad 配置教程
  • Haskell简明教程(三):Haskell语法
  • Haskell简明教程(二):从命令式语言进行抽象
  • Haskell简明教程(一):从递归说起