go语言的指针

u011760056 · · 1897 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在学习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


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:u011760056

查看原文:go语言的指针

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1897 次点击  
加入收藏 微博
1 回复  |  直到 2000-01-01 00:00:00
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传