提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
目录
1、指针常量 ——指针的值是个常量(数据类型* const p)
2、常量指针——指向常量的指针(const 数据类型*p,数据类型 const *p)
目的
提示:这里可以添加本文要记录的大概内容:
区分并明白指针常量、常量指针、常量指针常量
提示:以下是本篇文章正文内容,下面案例可供参考
1、指针常量 ——指针的值是个常量(数据类型* const p)
指针常量其实就是一个常量,因为在指针名前面加上了一个const,所以该常量无法被修改,但是该指针解引用后就可以被赋值修改了,用法如下:
#include<iostream>
using namespace std;
int main(){
int a = 1;
int b = 2;
int* const p1 = &a;//p1的值不能改变,但是*p1值可以
*p1 = b;
cout << "a = " << *p1 << endl;
return 0;
}
2、常量指针——指向常量的指针(const 数据类型*p,数据类型 const *p)
常量指针就是一个指针,常量指的是指针的所指内容,在指针前面加上一个const,就表示了该指针所指的的常量无法被修改,但是指针可以被修改,用法为:
int a=1;
int b=2;
const int* p2 = &a;//*p2的值不能被修改,但是p2可以
p2 = &b;
cout << "a=" << *p2 << endl;
3、常量指针常量——指针值和指针指向的值都是常量(const 数据类型* const p)
常量指针常量可以分为常量指针和指针常量的“和”,结合了上面两种,表示指针值和指针指向的常量都无法被修改,用法为:
int a=1;
const int* const p3 = &a;
//p3和*p3都无法被修改
cout << *p3 << endl;
cout << p3 << endl;
总结
将这三者总结成一张表:
指针常量 | 数据类型* const p | 指针的值是个常量 | 指针无法被赋值,指针解引用后有可以被赋值(p1的值不能改变,但是*p1值可以) |
常量指针 | const 数据类型* p | 指向常量的指针 | 指针解引用后无法被赋值,指针可以被赋值(*p2的值不能被修改,但是p2可以) |
常量指针常量 | const 数据类型* const p | 指针值和指针指向的值都是常量 | 指针和指针解引用后都无法被赋值(p3和*p3都无法被修改) |