用const修饰指针变量时的三种用法

/*用const修饰指针变量的三种效果*/
/*const int *p=&a  表示*P里面储存的内容不可以改变  不能使p修改a中的内容,
当可以使用其他的指向修改a中的内容 p的指向可以改变,但是其指向的内容是不可以
改变的*/
#include<stdio.h>
int main(void)
{
	int a=3;
	const int *p=&a;//等价于int const *p=&a
	printf("*p=%d\n",*p);
	//1.指向的内容不可以改变
	a=10;
	printf("a=%d\n",a);
	//*p=12; 此写法错误 p所指向的内存单元里的内容不可以改变 
	printf("*p=%d\n",*p);
	//2.p的指向可以发生改变,但是其所指向的内存单元里面的内容依然不能改变
	int b=4;
	p=&b;
	printf("*p=%d\n",*p);
	//3.其他指向a的指针也可以修改a的值
	 
	int *m=&a;
	printf("*m=%d\n",*m);
	*m=13;
	printf("修改后的值:\n");
	printf("*m=%d\n",*m);
	printf("a=%d\n",a);
	
	 
	return 0; 
	
 }

此之文件为.cpp文件
运行结果:如下图所示
用const修饰指针变量时的三种用法

/*int *const p=&a
p的指向不可以发生改变,内存单元的内容是可变的*/
#include<stdio.h>
int main(void)
{
	int i=3,j=4;
	int * const p=&i;//p的指向不可以发生改变
	printf("*p=%d\n",*p);
	//改变i的内容的值
	*p=10;
	printf("*p=%d\n",*p);
	//改变p的指向
//	p=&j;//p指向j
//	printf("*p=%d\n",*p);
	return 0;
	 
	
 } 

运行结果如下图所示:用const修饰指针变量时的三种用法
第三种:const int * const p=&a;
那么此时p中所指向内存单元中的内容和内存单元的地址都不可以发生改变