【C++基础】const修饰指针
三种情况:
- const修饰指针 ——常量指针。
特点:通过指针修改地址可以,修改地址内的值不行 - const修饰常量 ——指针常量。
特点:指针指向的地址不可以改,指针指向的值可以改 - const即修饰指针,又修饰常量。
特点:指针指向的地址不可以改,指针指向的值也不可以改。(啥都不能改)
1、常量指针
表达式:
int const * p = &a;
或
const int * p = &a;
(const 要在 * 左边)
特点:通过指针修改地址可以,修改地址内的值不行
示例:
#include<iostream>
using namespace std;
void main()
{
int a = 1;
int b = 1;
int c = 2;
//常量指针
//特点:通过指针修改地址可以,修改地址内的值不行
const int* p = &a;
//修改地址可以
p = &b;
//修改地址可以,( b != c )
p = &c;
//*p = 20; 通过指针修改地址内的值不行,此处报错
}
2、指针常量
表达式:
int * const p = &a;
(const 要在 * 右边)
特点:指针指向的地址不可以改,指针指向的值可以改
示例:
#include<iostream>
using namespace std;
void main()
{
int a = 1;
int b = 1;
int c = 2;
//指针常量
//特点:指针指向的地址不可以改,指针指向的值可以改
int * const p = &a;
//指针指向的值可以改
*p = 20;
//指针指向的值可以改 ( b = a )
*p = b;
//指针指向的值可以改 ( c != b )
*p = c;
//p = &c; 指针指向的地址不可以改 ( &c != &a )
}
3、const即修饰指针,又修饰常量
表达式:
const int * const p = &a;
或
int const * const p = &a;
特点:指针指向的地址不可以改,指针指向的值也不可以改。(啥都不能改)
示例:
#include<iostream>
using namespace std;
void main()
{
int a = 1;
int b = 1;
int c = 2;
//const即修饰指针,又修饰常量
//特点:指针指向的地址不可以改,指针指向的值也不可以改
int const * const p = &a;
//*p = 20; 指针指向的值不可以改
//*p = b; 指针指向的值不可以改
//p = &c; 指针指向的地址不可以改 ( &c != &a )
}
总结
*p指指针的值
p指指针的地址
const在谁的左边就修饰谁,修饰谁,谁就不能改。
记名字:
const(常量), *(指针)
const * 常量指针 不能改值
* const 指针常量 不能改地址
const * const 都不能改