GO语言学习日记(七)指针

在计算机科学中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。指针的灵活性和高效给予C++经久不衰的活力,一直是大公司青睐的编程语言之一。

指针也是每个刚学程序的孩子的噩梦,在加上引用、取地址、二级指针绝对能把一群初学者吓跑,在行业内就有精通C++的转其他语言都非常简单,可想而知C++的上手难度有大,有很大程度是拜指针所赐的。指针的灵活和强大的功能,也为其带来系列麻烦的问题:空指针、野指针等等。Go语言也相中指针这个灵活高效的,保留了C和C++指针,但弱化其操作,既减少了传值拷贝开销,也保证了程序安全和稳定。

那么我们用下面的代码简单讲讲Go的指针,代码如下图:


上面的代码先声明了一个a的整型变量并且初始化数值为9,然后声明了一个整形指针b,最后将a的地址赋值给b指针。第一行输出的结果为:a的内存地址,以及数值9;第二行输出的结果为:b存放了a的内存地址,并且b的指针指向a的内存单元9;第三行输出的结果为:b的内存地址,以及b存放的十进制的a的内存地址。

验证结果如下图所示:



这样就可以推断出,b存放的是a的内存地址,并且其指针指向a的内存单元,因此修改b存储的内存地址就可以改变b指针指向的内存单元。

再用下面的代码来印证这个观点,代码如下图所示:


上面的代码没有分段可能看的有点辛苦,但是不难看出,b在获取了内存地址,b的指针就能针对指针指向的内存单元进行修改,内存地址的切换就能改变其指针指向的内存单元。因此Go语言不需要开辟新的内存在进行赋值后在修改其内存单元,指针可以获取地址后针对内存单元进行修改。

眼尖的小伙伴可能看到前面两个代码,b指针并没有赋值,Go语言会给没有赋值的指针初始化一个空值nil,下面我们来测试一下b指针是不是看空指针,代码如下图所示:


Go在指针上保留了C和C++指针,但弱化其操作,既减少了传值拷贝开销,也保证了程序安全和稳定,在搜索Go指针的时候发现很多很有趣的文章,有兴趣的小伙伴可以自己去搜索一下来学习学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值