[C++基础]019_指针和引用(int*、int&、int*&、int&*、int**)
时间: 2024-02-10 16:42:57 浏览: 31
在C++中,指针和引用是两个非常常见的概念,它们可以让我们更加灵活地操作内存和变量。下面我们详细介绍一下指针和引用的概念及其用法。
1. 指针(int*)
指针是一个变量,它存储的是某个对象的地址,我们可以通过指针来访问这个对象。指针的类型与它所指向的对象的类型相同,例如int*表示指向int类型的指针。
指针的定义方式为:
```
int* ptr; //定义一个指向int类型的指针
```
我们可以通过&运算符获取一个对象的地址:
```
int a = 10;
int* ptr = &a; //将ptr指向a的地址
```
指针的解引用使用*运算符,可以访问指针所指向的对象:
```
int b = *ptr; //将b赋值为10,即ptr所指向的对象a的值
```
指针还可以通过运算符进行偏移,例如ptr++表示将指针ptr向后移动一个单位,即指向下一个int类型的地址。
2. 引用(int&)
引用是一个别名,它与某个对象绑定在一起,我们可以通过引用来访问这个对象。引用的类型与它所绑定的对象的类型相同,例如int&表示绑定一个int类型的引用。
引用的定义方式为:
```
int a = 10;
int& ref = a; //定义一个绑定a的引用ref
```
我们可以直接通过引用来访问对象:
```
ref = 20; //将a的值改为20
```
引用与指针的区别在于,引用必须在定义时就进行初始化,并且一旦绑定了某个对象,就不能再绑定其他对象;而指针可以在任何时候指向其他对象。
3. 指向指针的指针(int**)
指向指针的指针是一种多级指针,它存储的是一个指向指针的地址。例如int**表示指向int*类型的指针的指针。
指向指针的指针的定义方式为:
```
int a = 10;
int* ptr = &a;
int** ptr_ptr = &ptr; //定义一个指向ptr的指针的指针
```
我们可以通过*运算符进行解引用,获取指向的指针:
```
int* ptr2 = *ptr_ptr; //将ptr2指向a的地址
```
4. 指针的引用(int*&)
指针的引用是一种特殊的引用,它绑定的是一个指针的别名。例如int*&表示绑定一个int*类型的指针的引用。
指针的引用的定义方式为:
```
int a = 10;
int* ptr = &a;
int*& ref_ptr = ptr; //定义一个绑定ptr的引用ref_ptr
```
我们可以直接通过引用来访问指针:
```
ref_ptr = nullptr; //将ptr指向空地址
```
指针的引用可以用于函数参数,这样可以方便地修改指针的值。
5. 引用的指针(int&*)
引用的指针是一种指向引用的指针,它存储的是一个引用的地址。例如int&*表示指向int类型的引用的指针。
引用的指针的定义方式为:
```
int a = 10;
int& ref = a;
int&* ptr_ref = &ref; //定义一个指向ref的指针
```
我们可以通过*运算符进行解引用,获取引用:
```
int& ref2 = *ptr_ref; //将ref2绑定到a上
```
引用的指针也可以用于函数参数,这样可以方便地修改引用的值。
综上所述,指针和引用是C++中非常常见的概念,它们可以让我们更加灵活地操作内存和变量。在使用时,需要根据实际情况选择适合的方式。