常量修饰符 const
const
:常量修饰符,意即其所修饰的对象为常量(immutable)。
1、函数体内修饰局部变量
int main() { const int a=100; a=3000; // 报错 return 0; }
const 作为一个类型限定词,和 int 有相同的地位。
const int a; int const a;
两者等价
要明白:const 修饰的对象是谁,这里是 a 和 int 没关系, const 要求他所修饰的对象为常量,不可被改变,不可被赋值,不可作为左值(l-value)。
这样的写法也是错误的。
const int a; a=0;
这是一个很常见的使用方式:
const double pi=3.14;
在程序的后面如果企图对 pi 再次赋值或者修改就会出错。
2.配合指针的使用
const int* p;
还是先去掉 const 修饰符号。注意,下面两个是等价的。
int* p; int *p;
其实我们想要说的是,*p 是 int 类型。那么显然,p 就是指向 int 的指针,其实等价于:
const int (*p); int const (*p);
即,*p 是常量。也就是说,p 指向的数据是常量。
于是
p+=8; //合法 *p=3; //非法,p 指向的数据是常量。
那么如何声明一个自身是常量指针呢?方法是让 const 尽可能的靠近 p;
int* const p;
const 右面只有 p,显然,它修饰的是 p,说明 p 不可被更改。然后把 const 去掉,可以看出 p 是一个指向 int 形式变量的指针。
于是
p+=8; //非法 *p=3; //合法
const 还有一个作用就是用于修饰常量静态字符串。
例如:
const char* name=David;
如果没有 const,我们可能会在后面有意无意的写 name[4]='x'
这样的语句,这样会导致对只读内存区域的赋值,然后程序会立刻异常终止。有了 const,这个错误就能在程序被编译的时候就立即检查出来,这就是 const 的好处。让逻辑错误在编译期被发现。
const 还可以用来修饰数组
const char s[]=David;
与上面有类似的作用。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: C 语言常量与变量
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论