C语言.const修饰的作用
程序员文章站
2022-07-09 21:47:13
...
-
概念:
const修饰了某一个变量之后,就不能通过该变量修改里面。 -
使用场景:
在形式参数中遇到const修饰某些变量
int fun(const int a) // 一旦a被实参初始化了之后,就不能通过a修改a的值
int fun()
{
}
- 例子:
#include <stdio.h>
int main()
{
/* 当const关键词修饰普通变量
const int a;a = 100; //用const指针修饰a,a是可以赋一个初值,但是之后就不能是用a修改a的值
printf(“a = %d\n”,a);
a = 200;//编译出错 error: assignment of read-only variable ‘a’
printf(“a = %d\n”,a);
*/
/*当const关键词修饰指针变量
int a = 100;
int b = 50;
int * const p = &a;// const修饰p的本身,所以p一旦赋值了初值之后,就不能再通过p来修改p的自身。
//p = &b;//编译出错 error: assignment of read-only variable ‘a’
*p = 200;//是正确,因为const修饰p,但是没有修饰p指向的内容,所以可以通过p修改p指向的内容
printf("*p = %d\n",*p);
*/
/* 当const关键词修饰指针变量指向的内容时 */
/*
int a = 100;
int b = 200;
const int *p = &a; //const关键词修饰p指向的内容,而不是修饰p,所以p可以通过p修改p的值
p = &b;
b = 50;//没问题
*p = 50;//编译出错 error: assignment of read-only variable ‘a’
//原因: const修饰的是p指向的内容,所以我们不能通过p修改p指向的内容
printf("*p = %d\n",*p);
*/
-
结论:
// const int *p 等价于 int const *p 修饰的是p指向的内容 p = xxx地址(正确) *p = xxx值(错误)
// int * const p 修饰的是p的本身 p = xxx地址(都是错误的) *p = xxx值(都是正确)return 0;
}
上一篇: c++之const关键字
下一篇: 聊聊C++关键字const