Chinaunix
标题:
引用和指针的区别, static的作用??
[打印本页]
作者:
a250146196
时间:
2012-12-22 14:06
标题:
引用和指针的区别, static的作用??
引用和指针的区别, static的作用 ,, 希望能讲深点, 普通的区别我也知道引用时变量的别面 ,不占空间,指针式变量要占空间,应用必须初始化。 static 有限制作用域和延长生存周期。
作者:
titer1
时间:
2012-12-22 16:20
难道想从 汇编 角度?
作者:
sephirosh-
时间:
2012-12-22 21:18
引用一般用在函数参数传递上,更直接,而指针,是万能的,
如果函数参数用了引用之后,我们要改变函数参数的值,那么不需要用指针来做操作了,在函数里面只要改变相应的参数的值,函数外边也跟着变了。
不过,非得要区分,那么可以理解为,指针是一种操作内存的工具,引用是一种传递数据的方法(如果单单作为别名个人认为,意义不大),而前面说的,指针是万能的,但是,万能的东西,一般没有专业的好用(他比较复杂)。而引用比较简单,他不需要那些高深的概念。只要知道,例如函数形成声明为引用,那么如果调用的时候参数在函数里面发生了改变,函数外面的值也跟着改变了。而且,安全可靠。不会怕指针搞错了,发生莫名奇妙的情况。
其实在于一个资深程序员来说,有没有引用这个东西都一样,只要你有能力去驾驭好程序就可以了。
作者:
sephirosh-
时间:
2012-12-22 21:25
补充一点,如果声明参数为引用的函数。那么如果拿函数的参数来做赋值操作的时候要非常谨慎,如果不是有意的情况下,建议,尽量不要声明为引用,因为可能会无意间影响到函数外面对应的值,一言以蔽之,谨慎。
另外引用,理论上讲,更省内存。
php语言,函数调用的时候,优化器会默认是引用的,除非程序要改变它的值了。优化器才会去用一个变量去代替这个引用
作者:
sqfasd
时间:
2012-12-23 10:58
以前我也认为引用不占空间,是个类似宏的编译期就能解决的东西
我亲自动手研究了一下,发现引用也要在栈里开辟一块内存,存放的是它所引用的那个变量的地址
跟指针几乎是一样的
区别是语言层面的处理,对引用取地址,取的是它所指向的内存的地址。对指针取地址,取的是它本身所占的内存地址,对指针取值,取的才是它指向的内存地址
有点绕口令,简单点说,如果你在局部声明了很多很多引用的话,可能会导致栈溢出
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2