服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C++之const限定符详解

C++之const限定符详解

2022-07-21 09:49courage_lizy C/C++

这篇文章主要为大家介绍了C++之const限定符,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

const限定符:把变量定义成一个常量

1.使用const对变量的类型加以限定,变量的值不能被改变

?
1
2
const int bufSize=512;//输入缓冲区大小
bufSize=512;//错误 因为有等号试图向const对象写值

2.const对象必须初始化(其他时候不能出现在等号左边)

?
1
2
3
4
5
const int i=get_size();//正确 运行时初始化
const int j=33;//正确 编译时初始化
const int k;//错误 没有初始化
const int bb=0;
void *a=bb;//正确 在编译的时候 会把bb编译为常量0 const类型编译时按照常量处理

3.默认情况下const对象仅在文件内有效 想在多个文件内共享const对象 必须在变量定义之前加extern关键字

?
1
extern const int bufSize=fcn();

4.const的引用:对常量的引用

?
1
2
3
4
5
6
7
8
9
const int ci=1024;
const int&r1=ci;//正确 引用及其绑定的对象都是常量
r1=42;//错误 试图修改常量
int &r2=ci;//错误 存在改变const的风险
int i=33;
const int&r1=i;//正确  不可以通过r1对i进行修改 i依然可以通过其他途径修改
const int&r2=33;//正确
const int&r3=r1*2;//正确 此处
int &r3=r1*2;//错误 不能用非常量引用指向一个常量

5.指针和const

指向常量的指针

?
1
2
3
4
5
6
const doublenpi=3.14;
double *ptr=π//错误
const double *cptr=π
*cptr=3;//错误
double dval=3.14;
cptr=&dval;//正确 但不能通过cptr修改dval的值

const指针:指针是对象,也可以限定为常量(必须初始化)

把*放在const之前,说明指针是一个常量,不变的是指针本身的值而非指向的那个值

?
1
2
3
4
5
6
7
8
9
int errNumb=0;
int *const curErr=&errNumb;
const double pi=3.14159;
const double *const pip=π//指向常量的常量指针
*pip=2.71;//错误 试图修改常量pip
if(*cureRR){
     errorHandler();
     *curErr=0;//正确 试图修改变量erNumb
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容!

原文链接:https://blog.csdn.net/courage_lizy/article/details/121969254

延伸 · 阅读

精彩推荐
  • C/C++C++ COM编程之什么是接口?

    C++ COM编程之什么是接口?

    这篇文章主要介绍了C++ COM编程之什么是接口?在C++中,可以使用抽象基类来实现COM接口,需要的朋友可以参考下...

    果冻想10192021-02-04
  • C/C++vc控制台程序关闭事件时的处理方式及注意点详解

    vc控制台程序关闭事件时的处理方式及注意点详解

    在本篇文章里小编给大家整理的是一篇关于vc控制台程序关闭事件时的正确处理方式的相关知识点内容,对此有需求的朋友们可以参阅下。...

    babypapa3972022-03-08
  • C/C++C语言实现四窗口聊天

    C语言实现四窗口聊天

    这篇文章主要为大家详细介绍了C语言实现四窗口聊天,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    带着你的名字11802021-11-15
  • C/C++C语言链表完整操作演示

    C语言链表完整操作演示

    这篇文章主要为大家详细介绍了C语言链表的完整操作演示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    chulijun31078462021-06-25
  • C/C++OpenCV轮廓检测之boundingRect绘制矩形边框

    OpenCV轮廓检测之boundingRect绘制矩形边框

    在进行文本检测时,我们常常会用矩形边框将检测到的内容框除。这篇文章主要为大家介绍的是OpenCV中能实现这一效果的函数:boundingRect,感兴趣的同学可...

    翟天保Steven8042022-07-13
  • C/C++c++实现高精度加法

    c++实现高精度加法

    高精度运算是指参与运算的数(加数,减数,因子……)范围大大超出了标准数据类型(整型,实型)能表示的范围的运算。例如,求两个200位的数的和。这...

    傻蜗牛10392021-05-13
  • C/C++CreateThread()与beginthread()的区别详细解析

    CreateThread()与beginthread()的区别详细解析

    很多开发者不清楚这两者之间的关系,他们随意选一个函数来用,发现也没有什么大问题,于是就忙于解决更为紧迫的任务去了。等到有一天忽然发现一个...

    C语言教程网4532020-12-29
  • C/C++C++快速排序的分析与优化详解

    C++快速排序的分析与优化详解

    这篇文章主要介绍了C++快速排序的分析与优化,非常经典的算法,分析也较为详尽,需要的朋友可以参考下...

    C++教程网4942021-01-27