前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go语言的指针

go语言的指针

作者头像
李海彬
发布2018-03-19 15:51:56
6130
发布2018-03-19 15:51:56
举报
文章被收录于专栏:Golang语言社区

在学习go语言的时候,谈到了指针。之前很害怕指针,因为在传说中,指针这玩意儿据说狠不好弄,且有很多程序员都死在这上面。可是,这毕竟是go语言借鉴C语言为了提升速度的,所以硬着头皮把c语言的指针学习了一下,主要是概念的东西,顺便看了几行C语言的代码,为了不至于使自己的学习成果随着时间忘掉,故作此记录,以为之后学习的记录。

我对指针的理解:

记得他们说房子的事,那我就用房子做理解了。假如有A,B,C,D四个房子,且里面分别住着1,2,3,4四个人。那么a,b,c,d则分别为这四个房子的钥匙。于是乎正如C语言里面的表示

a = &1(俺是这么理解的,&1是为了说明住1的那个房间其实就是A)

b = &2

c = &3

d = &4

1 = *a(俺是这么理解的,a钥匙能开的那个房子住的人)

2 = *b

3 = *c

4 = *d

这样的话在进行数据交换的时候,使用指针是很效率的,只不过初学的时候有点难于理解,俺的理解是这样的

四个房间的钥匙还是a,b,c,d但是房子里面的人进行了呼唤,比如:A-->2 B-->1,C-->4,D-->3

这样a = &2,因为房子还在那,开A房间的钥匙还是a,但是人变成了2,所以a = &2了。

想到速度了:其实这也是为什么指针的速度要快一些,俺理解的是有一面是因为指针只是换了房子里面的人,而房子不用动,但是如果不用指针,则相当要再

盖四个房子,里面放上几个复制品(假设人可以复制),这样盖房子肯定要消耗时间呢(其他提升速度的原因俺没想到,俺也不往那么深想了)。

下面为贴代码已作说明:

func interchange(u *int, v *int){ var tmp int tmp = *v *v = *u *u = tmp }

func main(){ var x int = 5 var y int = 10 fmt.Println(x,y) interchange(&x,&y) fmt.Println(x,y) }

解释:

1、interchange函数:u和v分别为两把钥匙且房子为U和V里面住着1和2 *v = 2 ,*u = 1

2、U住进了2,V住进了1

3、main函数调用的时候&x 其实就是u,&y其实就是v,对应这U房和V房

4、经过交换,5到了V房,10到了U房

5、fmt.Println(x,y)其实这时候只有U的房子住的是10,V的房子里面住的是5,因为是这样理解的,*u,*v

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档