C++指针与引用
指针
- 可以为空(万恶之首)
- 可以做指针的偏移操作
- 可以用做修改一个变量
- 可以用来用来快速传递一个对象,没有复制的成本(只有指针复制的成本)
见下面代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| int f1(int* i) { *i = 2; }
int f2(int i){ i = 3; }
int main(){ int num = 0; f1(&num); std::cout << num << std::endl; f2(num); std::cout << num << std::endl; }
|
引用
- 引用同指针一样可以直接修改对象本身,减少传递对象的复制成本
- 引用不可为空,即创建必须初始化
- 引用不能同指针一样,进行四则运算
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| void f1(int& num) { num = 100; }
int main() { int i = 0; int &r = i; r = 1; std::cout << i << std::endl; std::cout << r << std::endl; f1(r); std::cout << i << std::endl; std::cout << r << std::endl; }
|
详情可见What are the differences between a pointer variable and a reference variable in C++?