C语言const详解

C语言const详解const 在实际编程中用得并不多 const 是 constant 的缩写 意思是 恒定不变的 它是定义只读变量的关键字 或者说 const 是定义常变量的关键字 说 const 定义的是变量 但又相当于常量 说它定义的是常量 但又有变量的属性 所以叫常变量 用 const 定义常变量的方法很简单 就在通常定义变量时前面加 const 即可 如 constinta 10 const 和变量类型 int 可以互换位置 二者是等价的 即上条语句等价于 intconsta 1

const 在实际编程中用得并不多,const 是 constant 的缩写,意思是“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。

说 const 定义的是变量,但又相当于常量;说它定义的是常量,但又有变量的属性,所以叫常变量。用 const 定义常变量的方法很简单,就在通常定义变量时前面加 const 即可,如:

const int a = 10; 

const 和变量类型 int 可以互换位置,二者是等价的,即上条语句等价于:

int const a = 10; 

那么用 const 修饰后和未修饰前有什么区别呢?它们不都等于 10 吗?

用 const 定义的变量的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以。所以说它定义的是只读变量。这也就意味着必须在定义的时候就给它赋初值。

如果定义的时候未初始化,我们知道,对于未初始化的局部变量,程序在执行的时候会自动把一个很小的负数存放进去。这样后面再给它赋初值的话就是“改变它的值”了,即发生语法错误。

用 const 修饰的变量,无论是全局变量还是局部变量,生存周期都是程序运行的整个过程。全局变量的生存周期为程序运行的整个过程这个是理所当然的。而使用 const 修饰过的局部变量就有了静态特性,它的生存周期也是程序运行的整个过程。我们知道全局变量是静态的,静态的生存周期就是程序运行的整个过程。但是用const修饰过的局部变量只是有了静态特性,并没有说它变成了静态变量。

我们知道,局部变量存储在栈中,静态变量存储在静态存储区中,而经过 const 修饰过的变量存储在内存中的“只读数据段”中。只读数据段中存放着常量和只读变量等不可修改的量。

前面说过,数组的长度不能是变量。虽然 const 定义的是只读变量,就相当于是定义一个常量。但是只读变量也是变量,所以 const 定义的变量仍然不能作为数组的长度。但是需要注意的是,在 C++ 中可以!C++ 扩展了 const 的含义,在 C++ 中用 const 定义的变量也可作为数组的长度。

const VS define

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228798.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:10
下一篇 2026年3月16日 下午6:11


相关推荐

  • acwing292. 炮兵阵地(状态压缩dp+滚动数组)[通俗易懂]

    acwing292. 炮兵阵地(状态压缩dp+滚动数组)[通俗易懂]司令部的将军们打算在 N×M 的网格地图上部署他们的炮兵部队。一个 N×M 的地图由 N 行 M 列组成,地图的每一格可能是山地(用 H 表示),也可能是平原(用 P 表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻击范围不受地形的影响

    2022年8月9日
    11
  • 闲谈IPv6-Anycast以及在Linux/Win7系统上的Anycast配置[通俗易懂]

    闲谈IPv6-Anycast以及在Linux/Win7系统上的Anycast配置[通俗易懂]正则安安每晚每隔三小时必然哭闹,我索性也就不睡了,反正也睡不好,起来泡茶,喝酒,作文。浙江温州皮鞋

    2022年5月10日
    53
  • 实测Seedance 2.0:当AI成为导演,Sora 2被超越了?

    实测Seedance 2.0:当AI成为导演,Sora 2被超越了?

    2026年3月13日
    2
  • 腾讯云搭建Socks5多IP代理服务器实现游戏单窗口单IP完美搭建教程附带工具「建议收藏」

    腾讯云搭建Socks5多IP代理服务器实现游戏单窗口单IP完美搭建教程附带工具「建议收藏」腾讯云搭建Socks5多IP代理服务器实现游戏单窗口单IP腾讯云多IPSocks5搭建教程配合代理工具实现单窗口单IP1.多IP服务器选择2.服务器购买功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数…

    2022年6月21日
    137
  • 【n8n教程】:n8n扩展和性能优化指南

    【n8n教程】:n8n扩展和性能优化指南

    2026年3月15日
    3
  • VS导入没有.sln文件的项目[通俗易懂]

    VS导入没有.sln文件的项目[通俗易懂]关于在VS中导入没有.sln文件的.net项目     导入的是一个网站项目,步骤是先创建一个空白的解决方案,再在解决方案中点击右键,添加一个现有网站项目,再选择相应的项目文件,即可进行网站的运行。如果在运行过程中出现xxx.cs文件中不存在该类型的命名或命名空间,那么极有可能是相应的.net框架版本不一致导致,所以在点击该项目的属性页中调整相应的框架版本,即可进行相应的网站项目运行。…

    2022年5月25日
    118

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号