指针

指针

  1. 基本数据类型,变量存的就是值,也叫值类型
  2. 获取变量的地址,用&
package main
import "fmt"
//演示golang中的指针类型
func main(){
	//基本数据类型在内存布局
	var i int = 10
	//i 的地址是什么,&i
	fmt.Println("i的地址是",&i)
}

输出

i的地址是 0xc0000aa058
  1. 指针类型,变量存的是一个地址,这个地址指向的空间存的才是值
package main
import "fmt"
//演示golang中的指针类型
func main(){
	//基本数据类型在内存布局
	var i int = 10
	//i 的地址是什么,&i
	fmt.Println("i的地址是",&i)
	//1.ptr是一个指针变量
	//2.ptr的类型是*int
	//3.ptr本身的值是&i
	var ptr *int = &i
	fmt.Printf("ptr=%v",ptr)
    fmt.Printf("ptr的地址是%v",&ptr)
}

输出

i的地址是 0xc00000a098
ptr=0xc00000a098
ptr的地址是0xc000006030
  1. 获取指针类型所指向的值,使用*
fmt.Printf("ptr指向的值=%v\n",*ptr)

输出

ptr指向的值=10

案例一:写一个程序,获取一个int变量num的地址,并显示到终端

package main
import "fmt"
func main(){
    var num int = 1
    fmt.Printf("num的地址%v",&num)
}

输出

num的地址0xc00000a098

案例二:将num的地址赋值给指针ptr,并通过ptr去修改num的值

package main
import "fmt"
func main(){
    var num int = 1
    fmt.Printf("num的地址%\n",&num)
    var ptr *int
    ptr = &num
    *ptr = 10 //这里修改时,会导致num值变化
    fmt.Println("num = ",num)
}

输出

num的地址0xc00000a098
num =  10

指针的使用细节

  1. 值类型都有对应的指针类型,形式为 *数据类型,比如int的对应的指针就是 *int,float32对应的指针类型就是 *float
  2. 值类型包括:基本数据类型int系列,float系列,bool,string,数组和结构体struct

posted on 2021-10-19 13:03  甜夜  阅读(48)  评论(0)    收藏  举报

导航