对func swap(a, b *int){*a, *b= *b, *a}的问题

来源:2-7 指针

aibo

2018-07-25

老师您好,这是我对func swap(a, b *int){*a, *b= *b, *a}的理解,您看一下对不对:定义swap函数的时候规定参数是一个指向内存地址的指针;在调用swap的时候传入两个对应的地址;当执行到*a, *b=*b, *a的时候相当于是把a指针的指向重定向到b指针指向的地址,因为这两个内存地址存着不同的值,所以变量中的值也就被替换了。老师,因为我是javascript的,最早11年开始工作是从jquery简单动画做起的,一直对编程基础不是很懂,还是想请教您一下变量/指针/地址和值的关系,指针到底是从变量指向地址的,还是从地址指向变量的啊........

写回答

1回答

ccmouse

2018-07-25

好的。不过同学的理解的确有误。指针还是原来的指针,指向的还是同一片内存。但这句话把这个内存里的值改变了。
举个例子一开始a指向3,b指向4
运行的时候先运行等号右边*b,*a,就是分别取值,得到4,3,然后进行赋值,把4给*a,就是让a指向的内存变成4,b也是同理。

1
2
aibo
还想请教一下老师,这种运行时先运算等号右边的值这个问题~以前有在官网上看ecmascript8的文档,里面也有说一些什么上下文无关语法啊产生式,终结符,非终结符,等式左右边,当时因为这个卡得挺厉害就没有往下看了,也因为英语基础也比较弱;想问问老师这种基础知识可以去哪里相对比较系统的看一看啊~;虽然英语基础也比较弱,但是需要的时候也会对着翻译看文档~ 也买了老师您的备战校招课程,还没有开始看,想问问老师那里面会有关于这方面的知识或者指条路之类的吗...
2018-07-26
共2条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程