Skip to content

指针

指针基本使用

  • 定义指针变量
    • 如何定义指针:一个指针变量指向一个值的内存地址,这就是一个指针。代码中可以使用var* 号,来定义一个指针。
  • 为指针变量赋值
  • 访问指针变量中指向地址的值
  • 代码示例
    package main
    
    import "fmt"
    
    func GetPoint() {
        // 定义一个变量
        var count int = 20
        // 定义一个指针 *type type为指向的类型,也就是指针的类型。
        var countPoint *int
        var countPoint1 *int
        // & 为取地址符号
        countPoint = &count
        // ↓↓↓ Go语言中的指针是不支持指针运算的
        // countPoint++
        fmt.Printf("count 变量的地址:%x \n", &count)
        fmt.Printf("countPoint 变量存储的地址:%x \n", countPoint)
        // *号可以申明指针,但也是一种取值运算符
        fmt.Printf("countPoint 指针指向地址的值:%d \n", *countPoint)
        // 未赋值的指针都是nil
        fmt.Println("countPoint 指针指向地址的值", countPoint1)
    }
    
    func main() {
        GetPoint()
    }
    
    
    // 输出
    MacintoshdeMacBook-Pro-139:point elasticnotes$ go run point.go 
    count 变量的地址c000136008 
    countPoint 变量存储的地址c000136008 
    countPoint 指针指向地址的值20 
    countPoint 指针指向地址的值 <nil>
    

指针数组

  • 指针数组
    • 指针是一个数组,数组的每一个元素都是一个指针。
      • 范例
        package main
        
        import "fmt"
        
        func PointArr() {
            // 指针数组
            a, b := 1, 2
            pointArr := [...]*int{&a, &b}
            fmt.Println("指针数组:", pointArr)
        }
        
        func main() {
            PointArr()
        }
        
        
        // 输出
        MacintoshdeMacBook-Pro-139:point elasticnotes$ go run point.go 
        指针数组 [0xc000014068 0xc000014070]
        
  • 数组指针
    • 数组是一个指针,但是是指向数组的。
      • 范例
        package main
        
        import "fmt"
        
        func ArrPoint() {
            arr := [...]int{1, 2, 3}
            arrPoint := &arr
            fmt.Println("数组指针:", arrPoint)
        }
        
        func main() {
            ArrPoint()
        }
        
        
        // 输出
        MacintoshdeMacBook-Pro-139:point elasticnotes$ go run point.go 
        数组指针 &[1 2 3]