const与指针


#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
	const double a_size = 5;
	const double *pdb = &a_size; //自以为指向const的指针,实际上可以不指向const对象。
	double b_size = 5;
	pdb = &b_size;   //pdb是*变量,可以改变指向
	//*pdb = 6;       //*pdb是const double常量,不可以通过*pdb修改
	b_size = 7;
	//void *pv = &a_size; 不能用void *指针保存const对象的地址
	//void *pv = pdb; 不能用void *指针保存const对象的地址
	const void *pcv = &a_size;  //自以为指向const的指针,实际上可以不指向const对象。
	int id1 = 4;
	pcv = &id1;  //允许将非const对象的地址赋值给const对象的指针
	id1 = 5;
	//*pcv = 6; 不能通过*pcv修改,但是可以直接修改非const对象
	//不保证指向const的指针所指对象的值一定不可以修改



	int id = 4;
	int *const cErr = &id;  //cerr是const指针变量,必须定义的同时初始化,而且一经初始化,就不可以改变指向
	*cErr = 11;   //cErr是const不可以修改,但是*cerr是int,可以修改

	const int id2 = 1;
	//int *const cErr1 = &id2; //error: : 无法从“const int *”转换为“int *”,cErr1指向int类型,而id1是const int,因此不能初始化成功
	
	system("pause");
}

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/81195388