读书人

关指针和引用,该怎么处理

发布时间: 2012-05-28 17:59:33 作者: rapoo

关指针和引用

C/C++ code
void Func2(int *x)    //指针{(* x) = (* x) + 10;}?int n = 0;Func2(&n);cout << “n = ” << n << endl; // n = 10 



C/C++ code
void Func3(int &x) //引用{x = x + 10;}?int n = 0;Func3(n);cout << “n = ” << n << endl; // n = 10 



是不是使用 引用 更节约内存,但不是很灵活, 不知道我理解的对吗?

[解决办法]
不是。
引用的内部实现也是指针。
所以同样的花销。
只不过一般指针有 为0的可能性。而引用一般没这个问题。
[解决办法]
如果非常严格的说,也算节约了一点点内存,因为传指针的话毕竟传递了一个地址的拷贝。
其实两者都是直接基于地址的操作。
区别除了楼上所说的,还有就是引用不能进行指针运算。
[解决办法]
探讨
如果非常严格的说,也算节约了一点点内存,因为传指针的话毕竟传递了一个地址的拷贝。
其实两者都是直接基于地址的操作。
区别除了楼上所说的,还有就是引用不能进行指针运算。

[解决办法]
内存上差不多,但是灵活性上,还是指针更加灵活,因为引用相当于一个常量指针,指向的内容不可变化,从第一之后到消亡,始终指向同一片内存。但是指针却是可以改变的。所以灵活性上,我觉得LZ说的很正确。

[解决办法]
两种语义很多地方效果都差不多吧,稍微有些区别,一个简单的例子,可以存在空指针,但空引用却是非法的。指针也是从C继承过来的。

读书人网 >C++

热点推荐