Go-指针类型详解(空指针、指针的指针、函数形参指针等)

目录

简介

声明

空指针

零值指针

声明并初始化

指针的指针

内存

函数传递指针

全部代码

结果截图


简介

  • 取地址符是&
  • 指针保存的是地址,地址里的数据才是真正的值,使用*来获取值

int系列、float系列、boo;、string、数组、结构体struct都有指针,一般在栈

指针、切片、管道、接口、Map是引用类型,一般在堆,GC回收

声明

空指针

Go中的空指针是nil

	var ptr *int

零值指针

func new(Type) *Type

内建函数new分配内存。其第一个实参为类型,而非值。其返回值为指向该类型的新分配的零值的指针。 

	ptr1 := new(int)

声明并初始化

i := 10
ptr2 := &i

ptr2存的是i的地址

指针的指针

	pptr := & ptr2

pptr存的是ptr2的地址

内存

以前面的指针和指针的指针为例

内存结果见后序截图

函数传递指针

func plus(p *int) {
	(*p)++
}
	plus(ptr2)

全部代码

package main

import "fmt"

func plus(p *int) {
	(*p)++
}

func main() {
	//------------声明指针------------
	//---空指针---
	var ptr *int
	//---零值指针---
	ptr1 := new(int)
	fmt.Println("ptr ptr1 *ptr1,:",ptr,ptr1,*ptr1)
	//-----------声明并初始化----------
	i := 10
	ptr2 := &i
	fmt.Printf("i的地址&i:%v,i的值:%v,ptr2的地址&ptr2:%v,ptr2的值:%v,ptr2指向的值:%v\n",&i,i,&ptr2,ptr2,*ptr2)

	//-------------指针的指针----------
	pptr := & ptr2
	fmt.Printf("pptr的地址&pptr:%v,pptr的值pptr:%v,pptr指向的值*pptr:%v,ptr2的地址&ptr2:%v,ptr2的值:%v,ptr2指向的值:%v\n",&pptr,pptr,*pptr,&ptr2,ptr2,*ptr2)

	//-------------函数形参指针--------
	plus(ptr2)
	fmt.Println(i)
}

结果截图

更多Go相关内容:Go-Golang学习总结笔记

有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lady_killer9

感谢您的打赏,我会加倍努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值