请问各位C++语言的引用从功能上到本质上与c语言的指针有什么区别
引用只能被初始化,不能试图改变引用的地址。引用不存在空地址。
指针有可能为空指针。
功能上没区别,使用上也没什么区别.因为引用本身里面用到了指针..
c++的引用是一个能自动逆向使用的常量指针,
因为指针太灵活。既然是常量就是不变的指针,一旦引用关系确立,就不可改变。在c++中,引用的引入,使的c++增强了语言特信,一方面,由于引用是不变的指针,却不能为空,所以使我们的代码更安全。另一方面,是用在参数传递和返回值,解决了大对象的传递和返回。
引用时支持c++运算符重载的基础,也为函数参数传入和传出的控制提供了便利
最常看见引用的地方是在函数参数和返回值中。当引用被用作函数参数时,函数内任何对引用的更改将对函数外的参数改变。当然,可以通过传递一个指针来做相同的事情,但引用具更清晰的语法。
e.g:
int * f (int * x)
{
(* x)++;
return x;
}
int & g (int & x)
{
x++;
return x;
}
int main ()
{
int A = 0;
f (&A); //ugly;
g (A); // clean;
} //以上见《thinking in c++》chapter 10;
引用和指针都可以通过地址来实现,但是指针不能为空,应用可以为空,其实引用更可以看作是别名,它和被引用的东西完全是一回事,但是指针不同,指针有自己的地址,只是它又指向了另一个地址,使用时要使用&操作符才能提领出指向的地址的内容
我想他是说使用了思想吧!
引用的功能用指针都能实现,为什么c++要引入引用的概念呢?
我想引用更安全!!以下情况下你应该使用指针 一是你考虑到存在不指向任何对象的
可能 在这种情况下 你能够设置指针为空 二是你需要能够在不同的时刻指
向不同的对象 在这种情况下 你能改变指针的指向 如果总是指向一个对象
并且一旦指向一个对象后就不会改变指向 那么你应该使用引用
还有一种情况 就是当你重载某个操作符时 你应该使用引用
看:http://www.csdn.net/expert/topic/777/777922.xml?temp=.3176233
定义引用时内存是为期分配空间的,但是他的内容是指向其引用对象的地址。
引用的功能用指针都能实现,为什么c++要引入引用的概念呢?
我想问题还是在语言功能上,引用最大的用处是传递引用传递。许多语言都支持引用传递,而C原来却不支持,这是个缺点。为了弥补这个缺点,程序不得不使用一种技巧:传递指针。
为什么说传递指针只是一种技巧呢?传递指针你仍然不能在函数内部改变参数的值,那么如果你要改变指针参数的值呢?使用二级指针?改变二级指针呢?传递三级指针?为什么总是不能直接改变实参的值呢?烦不烦?
PASCAL也支持指针,但他仍然有VAR关键字支持函数的引用调用,所以在pascal中,很少有程序员使用指针来实现在函数内部改变实参的值。
所以,有些功能不能把任务都留给程序员,还是语言自身支持比较好。
其实,如果使用一些非常非常复杂的技巧的话,C语言也能实现面向对象,但又有谁愿意那样做呢?
指针的使用相信你已经非常熟悉了.
而引用呢?实际上就是指针,但形式上是却是对象.
所以使用时更直观,也更安全.
引用和指针在概念上是完全不一样的,只不过目前可以用来完成相同的事情,
而且,在编译的时候,引用多用指针来实现,所以很容易混拉
但是,这两个类型在概念上是完全不同的,用法上也有些差别。
最明显的差别就是引用类型和指针类型的变量的左值和右值是不一样;
C程序员做过程;C++程序员做概念;