- 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继承过来的。