C/C++教程

const, 指针,引用

本文主要是介绍const, 指针,引用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# const, 指针,引用
## 简介
const 类型的值不可改变,可以同时只用一个const定义多个值: const int a, b, c 和指针引用不一样。 引用需要初始用&赋值, 初始化多个变量的时候,每个变量前面都应该有&, 和指针类型一样,这里应该是他们符号的优先级高,符号的作用域小,要不然相同时定义一个int类型的引用和变量就没法了。
引用定义完之后,就可以当成是一个别名。参见引用和指针部分的例子。
最总要的一点:指针和引用要是指向常量,也要在他们前面加上const,因为编译器没那么聪明,跟踪不了指向的值,直接用const修饰,检查他们是否被赋值,如果赋值违法。
## const and 指针
4种情况
```c++ int a = 5; const int *b = &a; // b的值可变,b指向的值不可变 int *const c = &a; // c的值不可变, c指向的值可变 const int *const d = &a; // 两者接不可变
const int A = 5; int *B = &A; // 错  如果A是const那么B必须用const修饰 const in* C = &A // 对 ```
助记:
1. int *是紧密在一块的, 不要弄成int const* a
2. const 离变量越远说明和这个变量自身的属性不大,那只能是和这个变量指向的变量关系大。
## const and 引用
与const and 指针情况2点不太类似
```c++ int a = 5; const int &b = a; // b引用a, a虽然不是常量,但是由于b引用的内容被const修饰,也不能对b赋值 b = 7; // 错误, 和指针不太一样 const int c = 4;
int &d = c; // 错误, 如果被引用对象是常量(const修饰,常数),那引用变量本来就应该用const修饰 int &e = 4; // 错误
double b = 5.1; const int & a = b; // 引用可以引用不同类型,但必须加上const
int const &a = b; // 错误,引用本来就只能赋值一次。// 和指针不一样
```
## 引用, 指针
把引用看成是别名
```c++ int a = 6; int *b = &a; int *&c = b; c = 5; //错误 *c = 5; // 正确 ```
## const , 引用, 指针
引用指针
```c++ int a = 1; int *b = &a; const int*& c = b; // c可以改变,c改变就是b改变,但是b指向的变量不可以变, 奇怪的是这种第一无法通过编译。 int d = 5; c = &d; // 正确 *c = 4; // 错误
// 如果最终指针指向的对象是常量,则应该写成下面的形式 const int e = 1; const int * b = &e; const int*& const c = b; // 错误, &应该和变量结合 const int* const &c = b; // 正确, 把c看成别名 &和变量结合,指针和类型紧密结合。就和const和指针的情况一样了
// 更常见的情况: const int* const &f = &e; // 第二个const是必须要加上,因为指针指针指向了一个常量。 ```
## 结论
1. 指向常量的指针和索引要在最前面加上const,如果想让该指针和索引也不能变,要在变量前再加上一个const
2. 索引符和变量结合, 指针和类型结合
```c++ const int a = 1; const int* const &b = &a; ``` 3. 不存在const int* &c 只有 const int* const &c
> 文件见const_test.cpp
这篇关于const, 指针,引用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!