天天看点

常量指针 与 指针常量

int main()
{
	int i = 1;
	int j = 2;
	int *const p1 = &i;	// 常量指针 : 指针本身是常量
	int const *p2 = &j;	// 指针常量 : 指向的内存是常量

	*p1 = 3;
//	p1 = &j;	// Error
	p2 = &i;
//	*p2 = 3;	// Error
	
	return 0;
}
           

以上代码供参考。

PS:这两个名称其实网上说法不一,有人颠倒着说,有人这么说。

咱们不纠结怎么称呼,只要理解就好。 (我找了一下《C程序设计语言》[毕竟C语言之父,人家是权威] 里,貌似没有明确命名,所以我就不敢下定论了)

我是这么记忆的:

    从右往左看,谁先出来,读谁。例如:int * const p 从右往左看,先 const 后 * 所以就 常量指针。

常量指针:分开读,常量、指针,意思就是这个指针是常量,所以指针本身的值不能改;

指针常量:分开读,指针、常量,先指针,后常量,指针指向一个常量,所以常量的值不能改。

注:如果您能找到官方的对两个称谓的规范,请指正,谢谢!