【c++】常量指针/指针常量

纵饮孤独 提交于 2019-12-20 23:48:14

1.
常量指针:表示指针指向一个被const修饰的变量;
  两种写法:
   1.const 类型 * 指针名;//例如const int* p;
   2.类型 const * 指针名;//例如int const* p;
  赋值:
   1.const变量的地址
   2.非const变量的地址
  特点:
   1.指向的内容(const)不能修改;
   2.指向可以修改;

指针常量:表示指针本身是一个被const修饰的变量;
  一种写法:
   指向的类型 * const 指针名; // 例如 int* const p;
  初始化:
   非const的变量的地址;
  特点:
   1.必须初始化
   2.指向的内容可以修改
   3.指向不能修改;

常量指针常量:1.指向常量 2.本身也是常量
  写法:
   const int* const p;
   int const* const p;
  特点:
   1.必须初始化
   2.不可以改变指向,不能改变指向的内容;

2.区分常量指针和常量指针:const和*的位置关系;

3.const:修饰变量,表示变量是只读的;
  特点: 1.必须初始化
     2.不能被修改;

4.常量指针和指针常量的区别:
  1.常量指针表示指针指向一个被const修饰的变量,
   指针常量表示指针本身是一个被const修饰的变量;
  2.常量指针不能改变指向的内容,可以改变指向;
   指针常量不能改变指向,能改变指向的内容,必须初始化;

	const int a = 4;
	int c = 5;
	int* const p = &c;//指针常量
	int* p2 = &c;
	int** const p1 = &p2;//指针常量
	*p = 20;//*p:int//可以修改指向的内容
	int d = 20;
	//p = &d;//报错,不能改变指向

	const int* const p3 = p2;//&a/&c/&d/p2
	*p2 = 20;
	//*p3 = 20;//报错:指向const

	const int a = 3;
	int const b = 4;//可以
	int c = 5;//非const
	//p指向a
	int const* p = &a;//常量指针:指向const int类型
	p = &c;//p指向c
	//*p = 10;//const int(报错,指向的内容不能修改)
	//int* p2 = &a;//报错,非const的指针不能指向const的变量
	int const* p1 = &b;//常量指针:指向const int类型
	p1 = &c;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!