035指针

2021-03-13  本文已影响0人  哆啦A梦_ca52
package main

import "fmt"

//地址就是指针
//&value 对值取地址
//*ptr对地址取值
func main011() {
//声明变量a时,系统开辟了一块内存【地址】,里面存的【值】是123
    var a int = 123
    fmt.Printf("a的类型是%T\n",a)//int
    fmt.Printf("a的值是%v\n",a)//123
    fmt.Printf("a的地址是%p\n", &a)//Ox...
   //&a取变量a的地址
   aPointer :=&a
   fmt.Printf("aPointer的类型是%T\n",aPointer)//int
//将aPointer指向地址中的值修改为456
*aPointer = 456
//a的值就变成了456
fmt.Println("a=",a)
}

func main04()  {
    //系统给x分配了内存
    var x = 456
    fmt.Println(x)//456
    //定义整型指针 (存储整型数据的地址)
    //默认赋值为空<nil>
    var xPtr *int
    fmt.Println("xPtr=",xPtr)//nil
    //aPtr指向x的值
    xPtr = &x
    //将xPtr指向的地址中的值修改为789
    *xPtr = 789
    fmt.Println(x) //789
    fmt.Println(xPtr) //0xc0420080
    fmt.Println(&x) //0xc0420080
    fmt.Println(*xPtr == x) //true
    fmt.Println(xPtr == &x) //true

    var y = 456
    *xPtr = y
    fmt.Println(x)  //456
    fmt.Println(xPtr) //没有变
    fmt.Println(&x)   //没有变
    fmt.Println(*xPtr)  //456
    fmt.Println(*xPtr == y) //true
    fmt.Println(x == y)    //true
    fmt.Println(&x == &y) //false
    fmt.Println(xPtr == &y)  //false

//xprt指向y的地址
  xPtr = &y
  y = 789
  fmt.Println(x)  //456
  fmt.Println(y) //789
  fmt.Println(*xPtr) //789
  fmt.Println(&x == xPtr) //false
}


//指针是严格检查数据类型的
func main045()  {
    var x =123
    var intPtr *int
    intPtr = &x
    fmt.Println(intPtr,*intPtr) //0x...,123
    //var y = "你妹"
  //  intPtr = &y //编译错误,【整型指针】无法赋值为【字符串的地址】
}



上一篇下一篇

猜你喜欢

热点阅读