用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文件
运行结果:如下图所示
/*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 int * const p=&a;
那么此时p中所指向内存单元中的内容和内存单元的地址都不可以发生改变