一、const是什么

const是C/C++中的类型修饰符。

二、const的作用

1、对变量声明只读特性,保护变量值以防被修改。

2、节省空间,避免不必要的内存分配。const修饰的变量在程序运行过程中只有一份拷贝。

3、提高程序运行效率。编译器不为普通const常量分配存储空间,而是将他们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储和读取内存的操作。

三、const的使用

1、const和普通变量

(1)编译器在编译过程中把用到const变量的地方都替换成对应的值。为了执行这个操作,编译器必须知道const变量的初始值, 如果程序包含多个文件,则每个用了该const变量的文件,都必须能访问到它的初始值才行,要做到这一点,就必须在每一个用到该const变量的文件中都有对它的定义或声明。

默认状态下,const变量仅在文件内有效,当多个文件中出现了同名的const变量时,等同于在不同文件中分别定义了独立的const变量

定义一个const变量

        const type value_name = value;

(2)对于有必要在文件间共享的const变量,在const变量定义和声明时添加extern关键字即可。

例如:

在test_extern_const.cpp中定义并初始化一个可被外部访问的const变量

        extern const int test_extern_const = 0;

在test_extern_const.h中声明变量extern_const_test和函数print_test_extern_const_value

        #ifndef _TEST_EXTERN_CONST_H#define _TEST_EXTERN_CONST_Hextern const int test_extern_const;#endif

在main.cpp中使用变量test_extern_const

        #include <iostream>#include "test_extern_const.h"using namespace std;int main() {cout<<"test_extern_const value is "<<test_extern_const<<endl;return 0;}

从main的运行结果可以看到,const变量test_extern_const被外部文件成功访问

2、const和引用

把引用绑定到const变量上,称为对常量的引用。与普通引用不同的是,对常量的引用不能修改它绑定的变量的值。

常量引用仅对引用可参与的操作做出了限定,对于引用的变量本身是不是一个常量未做限定。

        const int test_const = 0;const int &reference_to_const = test_const;

3、const和指针

(1)指向常量的指针

指向常量的指针没有规定其所指向的变量必须是一个常量。指向常量的指针仅仅要求不能通过该指针改变变量的值。

        const double value_name_1 = value;const double *pointer_to_const_1 = &value_name_1;double value_name_2 = value;const double *pointer_to_const_2 = &value_name_2; 

(2)常量指针

指针本身为常量,常量指针必须初始化,一旦初始化完成,它的值就不能再改变了。即不变的是指针本身的值而非指向的那个值。

        int value_name = value;int *const const_pointer = &value_name;

C语言 基础知识之const(const是什么,const的作用,const的使用)相关推荐

  1. C语言中的标识符以字母或下划线开头,牛逼大神整理的C语言基础知识,你确定你不码下来?...

    [[怪兽爱C语言]牛逼大神整理的C语言基础知识,你确定你不码下来?]https://toutiao.com/group/6577344220355363341/?iid=15906422033& ...

  2. c语言基础知识(知识点较为完整)

    计算机和c语言基础知识 计算机常识 什么是计算机? 顾名思义,就是能够进行数据运算的机器(台式电脑.笔记本电脑.平板电脑.智能手机) 计算机_百度百科 计算机的发明者是谁 ? 关于电子计算机的发明者是 ...

  3. C语言基础知识-数据类型

    C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个.1>.数据类型关键字(12个)char,sh ...

  4. 2022最新知识,一步一步学习C语言基础知识入门(图例解析)

    一.C语言基础知识入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是 ...

  5. c++语言基础知识,c++语言基础知识汇总.ppt

    <c++语言基础知识汇总.ppt>由会员分享,可在线阅读,更多相关<c++语言基础知识汇总.ppt(68页珍藏版)>请在人人文库网上搜索. 1.1,第二章 C+语言初步,本章主 ...

  6. R语言基础知识详解及概括

    R语言基础知识详解及概括 目录 R语言基础知识详解及概括 R数据可视化示例 R语言进行数据创建

  7. python代码计算矩形面积_学习资料Python语言基础知识笔记以及答案

    01. Python语言基础知识等笔记: 02. Python作业答案: [例2-3]通过输入函数input()输入股票代码.股票名称.当天股票最高价和最低价,通过输出函数print()输出股票代码+ ...

  8. 计算机java语言教程,计算机JAVA教程二讲Java语言基础知识.doc

    计算机JAVA教程二讲Java语言基础知识 2.1简单数据类型 2.1.1 标识符和保留字 1.标识符 程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier).Java语言 ...

  9. java填空题_Java语言基础知识填空题

    Java语言基础知识填空题 想学java语言的人,要多做题才能巩固知识,下面小编为大家带来了Java语言基础知识的填空题,欢迎大家阅读! Java语言基础知识填空题. 1.浮点型数据根据数据存储长度和 ...

  10. c打印无符号整数_C语言基础知识:printf的输出格式,C/C++语言编程讲解

    C语言基础知识:printf的输出格式 printf()函数是格式输出函数,请求printf()打印变量的指令取决与变量的类型.例如,在打印整数是使用%d符号,在打印字符是用%c 符号.这些符号被称为 ...

最新文章

  1. SQL执行并返回执行前/后结果
  2. HDLBits 系列(12)All about Karnaugh Map
  3. CodeForce 534C Polycarpus' Dice (数学推理)
  4. gwt-2.8.2下载_从GWT开发人员的角度概述Scala.js
  5. Spring Boot 集成MyBatis
  6. extern c作用_extern “C”的作用详解
  7. MySQL 字符集和校对
  8. Scatter-gather DMA 与 block DMA
  9. minio 文件服务器,5分钟解决SpringBoot集成minio文件服务器的过程
  10. windows 安装 perl 教程
  11. 巴旦木和杏仁的营养价值哪个好?丨巴旦木功效与作用
  12. 课表插件timetable
  13. 国外开放课程及一些国外大学的网址
  14. 商标复审成功率是多少?
  15. Windos10使用手册
  16. 【工作向】docker镜像构建方法与命令
  17. 生活随记 - NBA总决赛第5场 球迷有感
  18. 【每天进步一点】C#对象之间的关系
  19. 最小二乘法求解线性回归模型
  20. Elastic认证特训营 难点解读01——best_fields, most_fields, cross_fields 拆解认知

热门文章

  1. 编译proto文件python_Python:如何将proto文件编译为python文件
  2. 使用 Shell 脚本监控主机,实现主机性能监控
  3. 工程技术提高营销效率(一)
  4. 2015年俄罗斯跨境电商市场分析[转]
  5. 四个开源商业智能平台比较
  6. 【原创】系统设计之系统时序图表达
  7. 三维QLC NAND闪存的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. 前沿重器[1] | 微软小冰-多轮和情感机器人的先行者
  9. ディーゼルは、特別な資質のこれらの種類をはるかに印象
  10. TCP还是UDP,网络游戏应该用哪种协议