常量指针和指针常量的功能和区别

**很烦死活记不住,常量指针和指针常量还有常量引用今天就好好梳理一下。

  • 常量指针(不能改数据,可以改方向):
#include<iostream>
using namespace std;
int main()
{
	int a = 99;
	int b = 90;
	const int* p;//常量指针
	*p = 100;//很显然指针被const修饰之后就无法修改其所对应内存的数据了编译器会报错,(简称无法改值).
	p = &b;
	cout << *p;
}

在编译器中会报错:
在这里插入图片描述

想把a地址中的99改为100,可是常量指针不允许这么做。
上述代码在删除报错行后就可以将本来a的地址改为b的地址,从而输出90;

  • 指针常量(不能改方向,可以改数据):
#include<iostream>
using namespace std;
int main()
{
	int a = 99;
	int b = 90;
	int* const p=&a;//指针常量
	*p = 100;
	p = &b; //此时修改指针指向的时候编译器会报错.
	cout << *p;
}

在这里插入图片描述
想更改指针中保存的地址,这种行为在指针常量中是不允许操作的。
上述代码在删除报错行后就可以将现有地址中的数据从99改为100;

猜你喜欢

转载自blog.csdn.net/weixin_43370807/article/details/108472089