C++常量指针与指针常量有什么区别

const修饰指针

const修饰指针有三种情况

  1. const修饰指针 — 常量指针
  2. const修饰常量 — 指针常量
  3. 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;这种情况就不用多说了吧,都不可以改

总结

(如果您发现我写的哪里有错误,欢迎在评论区批评指正)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值