C语言const用法
const是一个C语言的关键字,它限定一个变量不允许被改变,产生静态作用.
常类型是指使用类型修饰符const说明的类型,常类型的变量的值是不能改变的.(可以采取别的方式修改值)
下面的代码错在哪里?
1 | const int n = 5; |
为什么编译器会报错,”常量”和”只读变量”是有区别的.常量,例如5,”abc”等等,肯定是只读的,常量被编译器放在只读区域,当然也就不能修改.而”只读变量”则是在内存中开辟一个地方来存放它的值,只不过这个值被编译器限定不允许修改.
下面的代码哪一句有错误?
1 | typedef char *pStr; |
答案是p2++
错误. const的基本使用形式: const type m; 限定m不可变,只读. 可以对应*p1
不可变,p1
可变.p2
不可变
指针举例
下面的const分别修饰什么
- const在前面
1 | const int a; //a不可变 |
- const在类型后面
1 | int const a; //a不可变 |
分析:const值修饰其后的变量,放在类型前和类型后,并没有区别,*
不是类型,*
只是代表改变量是前面的修饰数据类型的指针
- 多变量一起声明
1 | int const *p1, p2; |
p2是const,*
和p1是一个整体,*p1
不可变,p1可变.仅声明了p1为指向int类型的指针.如果两者皆为指向int类型的指针,int *p1, *p2
即可.
1 | int const * const p1, p2; |
p2是const,*p1
是const,被前一个修饰、p1被后一个修饰,也是const
1 | int * const p1, p2; |
p1是const,(* const p1)
才是一个整体,所以p2是这样的int p2