关于引用和指针
关于引用和指针最近刚开始用,用来作为函数的参数,这样可以把在函数中的值,传递出来,可以视为 作用是返回值的参数,但是 在传递参数的时候我发现 比如我定义一个函数 是这样的 void hanshu (int &n);
1为什么我传递的时候 传递的不是引用 hanshu(&n) 而是 int k; hanshu (k) ; ? 这里我应该怎么理解? ,
2还有就是 指针和引用用于函数参数使用的时候有什么区别,
3还有 设定全局变量 和 设定局部变量的做法 哪个效率更高?
4设定局部变量的效率 一定比设置全局变量的效率高么 高多少
求大大解答
[解决办法]
............简直无从答起,应该看书
[解决办法]
楼主的这些问题其实都没有一个很固定的答案可以回答,因为在不同的应用场合,程序的书写的不同的。所以写程序的时候还是根据自己当前的具体情况来做。
[解决办法]
1.定义变量的引用格式为: int &a= b;
2.传递指针时,实际上是定义了一个指针变量,它指向一个地址。而引用则是实参的一个别名,他们的地址是一样的。
3.效率? 我只知道全局变量会破坏封装。所以应该尽量避免使用···
[解决办法]
1. 引用就是一个变量的别名,其本质还是变量自身。hanshu(&n)还是hanshu (k)仅仅是一种规定的表达方式而已。由于&这个符号的多义性,如果写成&n就会被理解成n的地址。
2. 指针作为函数的参数,那么传入函数内部的是该指针的一份拷贝(其实指针就是一个unsigned int),如果参数是引用则传递到函数内部的就是参数自身。由此可知,指针作为参数的效率要比引用参数的效率低,因为它需要拷贝一次。
第3和4两个问题应该可以归类为一个问题。全局变量的生命周期比程序本身还要长,即main函数开始前它就存在了,main函数结束后,它才会被销毁,不存在压栈的问题。与之相比,局部变量的生命周期就在包含它的一对{}内,短暂得多,有压栈和出栈等操作。所以不能说局部变量的效率比全局变量的效率高,同时他们之间的效率比较,还要看比较的原则是什么。总之,建议楼主不要纠结全局和局部变量的效率差别了。
最后关于指针和引用,可以参考:
C/C++中指针和引用之相关问题研究