Golang 指针类型

116 阅读1分钟

指针类型

变量是一种使用方便的占位符,用于引用计算机内存地址 Go 语言的取地址符 是 &,在变量前使用就会返回相应变量的内存地址

指针 是指向一个值的 内存地址

// var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针
var var_name *var-type

/* 指向整型*/
var ip *int
/* 指向浮点型 */   
var fp *float32

指针的使用

package main

import "fmt"

func main() {
    var a int= 20   /* 声明实际变量 */
    var ip *int        /* 声明指针变量 */

    ip = &a  /* 指针变量的存储地址 */

    fmt.Printf("a 变量的地址是: %x\n", &a  )

    /* 指针变量的存储地址 */
    fmt.Printf("ip 变量储存的指针地址: %x\n", ip )

    /* 使用指针访问值 */
    fmt.Printf("*ip 变量的值: %d\n", *ip )
}
package main

import "fmt"

const MAX int = 3

func main() {
    a := []int{10,100,200}
    var i int
    var ptr [MAX]*int;

    for  i = 0; i < MAX; i++ {
       ptr[i] = &a[i] /* 整数地址赋值给指针数组 */
    }

    for  i = 0; i < MAX; i++ {
       fmt.Printf("a[%d] = %d\n", i,*ptr[i] )
    }
}

空指针

当一个指针被定义后没有分配到任何变量时,它的值为 nil

package main

import "fmt"

func main() {
    var  ptr *int

    fmt.Printf("ptr 的值为 : %x\n", ptr)  // ptr 的值为 : 0
}
if(ptr != nil)     /* ptr 不是空指针 */
if(ptr == nil)     /* ptr 是空指针 */