一个不容易混淆的方法区分诸如const int * 、int const *和int * const

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_39088557/article/details/80306184

参考这位的说法,具体代码

	const int a = 1;
	int const b = 2;//&a 和 &b 是const int * 类型
	a = 1;//错误
	b = 1;//错误
	const int * p1 = &a;
	int const * p2 = &a;//p1,p2不报错,说明两者等价
	int * const p3 = &a;//报错,const int *类型数据无法初始化int * const类型的实体
	
结论:const修饰其左边的类型,例外为,如果const在最左边,则修饰其右边的类型声明的第一个部分(const只能修饰一个词)。
所以const int 跟 int const等价,进一步所以const int * 和 int const * 等价(int *的第一个部分为int)。
所以int const * 为 “constant integer”,即const 修饰 int,所指的整数不能变。
所以int * const 为“const pointer”,即const 修饰 *,指向不能变。
(int *) const 是错误的表达方式。

猜你喜欢

转载自blog.csdn.net/sinat_39088557/article/details/80306184