【GO - 指针】

一、基本介绍

变量的地址,使用&,int num int , 地址#
指针变量存的是一个地址,这个地址指向的空间存的是值:var ptr *int = &num

package main

import "fmt"

func main() {
	var i int = 10
	//i的地址用&i表示
	fmt.Println("i的地址", &i)

	//ptr是一个指针变量,类型是*int,指向int的一个指针,ptr本身的值是&i
	//ptr就是i的地址
	var ptr *int = &i
	fmt.Println("ptr的值是", ptr)

	//获取指针类型所指向的值,用*,var ptr *int, 使用*ptr获取ptr指向的值
	fmt.Printf("ptr指向的值类型是%T 值为%v", *ptr, *ptr)
}

输出

PS D:\GO\goproject\chaptor4\demo1> go run .\main.go
i的地址 0xc0000a6058
ptr的值是 0xc0000a6058
ptr指向的值类型是int 值为10

二、指针操作

1、修改指针指向的值,会直接修改变量

package main

import "fmt"

func main() {
	var num int = 9
	fmt.Printf("num的值为%v\n", num)
	var ptr *int = &num
	*ptr = 10   //修改指针指向的值,会直接修改变量
	fmt.Printf("num的值为%v", num)

}

输出

PS D:\GO\goproject\chaptor4\demo2> go run .\main.go
num的值为9
num的值为10

2、指针练习

package main

import "fmt"

func main() {
	var a int = 300
	var b int = 400
	var ptr *int = &a 
	*ptr = 100 //a=100
	ptr = &b
	*ptr = 200 //b=200
	fmt.Printf("a=%v, b=%v, *ptr=%v", a, b, *ptr)
	//100,200,200
}

输出

PS D:\GO\goproject\chaptor4\demo3> go run .\main.go
a=100, b=200, *ptr=200

三、指针使用细节

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值