目录
const修饰变量
const修饰指针变量
const放在指针类型之前
const放在指针类型之后
小结
const修饰变量
当 const 修饰 int类型 的 变量a 后,此时的 变量a 就具有长属性,就不能被赋值为其他的值
将 变量a的地址 存储到 指针变量pa 中,通过 指针变量pa解引用 改变 变量a 的值
但是加上 const 修饰就是为了不能改变 变量a 的值,所以要再用 const 修饰 指针变量pa
再次加上 const 修饰 指针变量pa 后,变量a 就不能被修改为其他的值
由此我们可以引入概念:const 可以修饰 指针变量
const修饰指针变量
const放在指针类型之前
代码演示:
#include<stdio.h>
int main()
{
int x = 11;
int y = 99;
const int* px = &x;
*px = 20; //true or false?
px = &y; //true or false?
return 0;
}
代码解析:
被const修饰后不能被改变的是:
当 const 放在 指针类型int* 之前时,修饰的是 *px,也就是修饰的是 指针变量px解引用 后所指向的 变量x的数据 不能被改变
被const修饰后能被改变的是:
可以改变 指针变量px本身,也就是可以改变 指针变量px所存放的地址
代码验证:
*px = 20; //true or false?
px = &y; //true or false?
const放在指针类型之后
代码演示:
#include<stdio.h>
int main()
{
int x = 11;
int y = 99;
int* const px = &x;
*px = 20; //true or false?
px = &y; //true or false?
return 0;
}
代码解析:
被const修饰后不能被改变的是:
当 const 放在 指针类型int* 之后时,修饰的是 px,也就是修饰的是 指针变量px 所存储的 变量x的地址 不能被改变
被const修饰后能被改变的是:
可以改变 指针变量指向的内容,也就是可以改变 指针变量px解引用 后所指向的 变量x的数据
代码验证:
*px = 20; //true or false?
px = &y; //true or false?
小结
想要 指针变量所指向的内容不被改变 时:const放在指针类型之前
想要 指针变量所存储的地址不被改变 时:const放在指针类型之后
想要 指针变量所指向的内容 和 指针变量所存储的地址 不被改变 时:const放在指针类型前和后