关指针和引用,该怎么处理
关指针和引用C/C++ codevoid Func2(int *x)//指针{(* x) (* x) + 10}?int n 0Func2(&n)cout “n
关指针和引用
C/C++ codevoid Func2(int *x) //指针{(* x) = (* x) + 10;}?int n = 0;Func2(&n);cout << “n = ” << n << endl; // n = 10
C/C++ codevoid Func3(int &x) //引用{x = x + 10;}?int n = 0;Func3(n);cout << “n = ” << n << endl; // n = 10
是不是使用 引用 更节约内存,但不是很灵活, 不知道我理解的对吗?
[解决办法]不是。
引用的内部实现也是指针。
所以同样的花销。
只不过一般指针有 为0的可能性。而引用一般没这个问题。
[解决办法]如果非常严格的说,也算节约了一点点内存,因为传指针的话毕竟传递了一个地址的拷贝。
其实两者都是直接基于地址的操作。
区别除了楼上所说的,还有就是引用不能进行指针运算。
[解决办法][解决办法]内存上差不多,但是灵活性上,还是指针更加灵活,因为引用相当于一个常量指针,指向的内容不可变化,从第一之后到消亡,始终指向同一片内存。但是指针却是可以改变的。所以灵活性上,我觉得LZ说的很正确。
[解决办法]两种语义很多地方效果都差不多吧,稍微有些区别,一个简单的例子,可以存在空指针,但空引用却是非法的。指针也是从C继承过来的。