zoukankan      html  css  js  c++  java
  • 3.7 Go指针

    1. Go指针

    每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。

    Go 语言中使用&作符放在变量前面对变量进行“取地址”操作。

    1.指针默认值nil
    2.通过&(取地值符)取变量地址
    3.通过*(取值符)透过指针访问目标值
    

    格式:

    age := 18
    ptr:=&age  //age是变量名,&age是取age的内存地址,地址交给ptr变量接收,ptr类型是*int
    

    首先基本数据类型中,如name="yugo" ,变量name存的值是yugo

    1)基本数据类型,变量存的是,称为类型

    2)通过&符号获取变量地址,例如&name

    3)指针类型的变量,存的是另一个变量的内存地址,这个地址指向的空间存的是

    4)获取指针类型指向的,使用*,例如*ptr,使用*ptr获取ptr指向的值

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        var name string = "yugo"
        //查看name变量的内存地址,通过&name取地址
        fmt.Printf("name的内存地址:%v
    ", &name)
    
        //指针变量,存的是内存地址
        //ptr指针变量指向变量name的内存地址
        var ptr *string = &name
        fmt.Printf("指针变量ptr的内存地址:%v
    ", ptr)
    
        //获取指针变量的值,用*ptr
        //*ptr表示读取指针指向变量的值
        fmt.Printf("指针变量ptr指向的值是:%v
    ", *ptr)
    }
    

    5)值类型(int、float、bool、string、array、struct)都有对应指针类型

    比如*int*string等等

    6)使用指针类型交换变量的值

    //想要交换ab的值
    func exchange(a, b *int) {
        *a, *b = *b, *a
    }
    
    func main() {
        a, b := 3, 4
        exchange(&a, &b)
        fmt.Println(a, b)
    }
    

    7)使用new()函数创建指针

    func main() {
        s1 := new(string)                                  //new函数返回指针类型*string,用s1指针变量存储
        fmt.Printf("s1类型:%T  s1指针变量存储的内存地址是:%v
    ", s1, s1) //s1类型*string,值是空字符串的内存地址
        //s1="哈哈" 错误写法,s1存储的内存地址
        *s1 = "马云说我不爱钱" //*s1取内存地址指向的值
        fmt.Println(*s1)
    }
  • 相关阅读:
    【HDOJ】2267 How Many People Can Survive
    【HDOJ】2268 How To Use The Car
    【HDOJ】2266 How Many Equations Can You Find
    【POJ】2278 DNA Sequence
    【ZOJ】3430 Detect the Virus
    【HDOJ】2896 病毒侵袭
    求奇数的乘积
    平方和与立方和
    求数列的和
    水仙花数
  • 原文地址:https://www.cnblogs.com/open-yang/p/11256771.html
Copyright © 2011-2022 走看看