0%

C++ 指针与引用

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; ///< 此处num为2
f2(num);
std::cout << num << std::endl; ///< 此处num仍为2
}

引用

  • 引用同指针一样可以直接修改对象本身,减少传递对象的复制成本
  • 引用不可为空,即创建必须初始化
  • 引用不能同指针一样,进行四则运算
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; ///< i这里为1
std::cout << r << std::endl; ///< r这里为1
f1(r);
std::cout << i << std::endl; ///< i这里为100
std::cout << r << std::endl; ///< r这里为100
}

详情可见What are the differences between a pointer variable and a reference variable in C++?