const修饰指针
const修饰指针有三种情况
- const修饰指针 — 常量指针
- const修饰常量 — 指针常量
- const即修饰指针,又修饰常量
(常量指针和指针常量怎么记,我个人的口诀是这样的:常量在前,值改不了,常量在后,值可以改(地址刚好相反))
1. 常量指针(const int *) (常量在前)指向的值不可以改 地址可以改
#include <string>
#include <iostream>
using namespace std;
void test01()
{
int a = 10;
int b = 10;
//const修饰的是指针 就是常量指针 指针指向可以改 指针指向的值不可以改
const int * p1 = &a;
p1 = &b;//这里是没有报错的 指针的指向改了
*p1 = 100;//这里是报错的 指针指向的值不可以改
}
int main()
{
test01();
cout << "\n\n有时候我觉得自己像一只小小鸟" << endl;
system("pause");
return 0;
}
2.指针常量(int * const) (常量在后)指向的值可以改 地址改不了
#include <string>
#include <iostream>
using namespace std;
void test01()
{
int a = 10;
int b = 10;
//const修饰的是常量 就是指针常量 指针指向不可以改 指针指向的值可以改
int * const p1 = &a;
p1 = &b;//这里是报错的 指针的指向不可以改
*p1 = 100;//这里是没有报错的 指针指向的值可以改
}
int main()
{
test01();
cout << "\n\n有时候我觉得自己像一只小小鸟" << endl;
system("pause");
return 0;
}
3.const既修饰指针又修饰常量 const int * const p = &a;这种情况就不用多说了吧,都不可以改
总结
(如果您发现我写的哪里有错误,欢迎在评论区批评指正)