C++ const指针和typedef

  • 时间:
  • 来源:互联网
  • 文章标签:

问题描述:

最近开发过程中遇到一个小问题,在此记录一下,场景是使用关键字typedef定义了一个指针类型, 使用const修饰变量属性的时候,结果和预期的不一样;示例代码如下:

#include <stdio.h>
typedef int* pInt;
int main()
{
	int iNum =	1;
	const int* pNum1 = &iNum;
	int* const pNum2 = &iNum;
	// pNum3是什么?和pNum1一样?还是和pNum2一样? 
	const pInt pNum3 = &iNum;	//和pNUm2一样,是一个指向int的常指针
	pInt const pNum4 = &iNum;	//和pNUm2一样,是一个指向int的常指针
	
	return 0;
}

原因分析:

因为const是修饰pInt的,pInt是一个指针类型,所以const修饰的是指针,const放在pInt前面或者后面是效果一样的;
或者这样理解,const Int iNum = 1;修饰的是一个int常量,如果将int换成pInt,修饰的就是一个int*常量,这个指针的值不能修改,也就是常指针


总结:

使用const修饰typedef定义的类型的时候,需要注意修饰的是不是一个指针类型,因为不管const放在指针类型前面还是后面,最终定义的都是一个常指针

本文链接http://www.taodudu.cc/news/show-1781819.html