首先,我们介绍下const
使用上的语法,如下
/*
* @Brief: file description
* @Author: liudy
* @Email: deyin.liu@nscc-gz.cn
* @Date: 2021-06-26 16:32:33
* @LastEditors: liudy
* @LastEditTime: 2021-06-26 16:41:20
*/
#include <iostream>
using namespace std;
int main() {
char a = 'a';
char b = 'b';
const char *p = &a;
p = &b; // legal
// *p = b; // illegal
char* const p2 = &a;
// p2 = &b; // illegal
*p2 = b; // legal
const char* const p3 = &a;
p3 = &b; // illegal
*p3 = b; // illegal
return 0;
}
- 当
const
在*
的左边时,指针本身指向的地址是可以改变的,但是指针指向的内容是不可改变的。 - 当
const
在*
的右边时,指针本身指向的地址是不改变的,但是指针指向的内容是可改变的。 - 当
const
在*
的两边时,指针本身指向的地址是不改变的,但是指针指向的内容是不改变的。
void func(const Widget *pw);
void func(const Widget const *pw);
在阅读代码的时候,可能看到以上代码,由规则可知两种写法等价。