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

本文深入解析C++中const修饰符的使用,详细阐述常量指针、指针常量及常量指针常量的概念与区别,通过实例说明它们的特性与应用。同时,介绍了如何使用typedef为类型取别名。

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;

----------------------------------
//给类型取别名:将typedef关键字去掉(看什么类型)
typedef int(*Pfunc)(int, int); //给函数指针类型取别名:Pfunc
typedef int I;//I是int类型的别名
typedef int(*PArray)[4];
int(*p)[4]; //PArray p;
int(*p[5])[4];//PArray p[5];
I i;//等同于int i;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值