查看“C语言中的常变量”的源代码
←
C语言中的常变量
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
https://www.bilibili.com/video/BV1vR4y1H7MY/?p=11 用 const 关键字修饰的变量,称为常变量。// c const // c++ const 变量:可读可写; 常量:只可读不可写; 常变量:? 示例:<syntaxhighlight lang="c"> #include<stdio.h> int g_max = 10; //全局变量 int main() { int x = 0; int sum = 20; g_max = 100; //普通全局变量可以被赋值 printf("g_max = %d \n", g_max); return 0; } </syntaxhighlight><syntaxhighlight lang="console"> g_max = 100 </syntaxhighlight>也就是说普通全局变量可以被修改,但加入 const 修饰全局变量以后则不能对全局变量再进行赋值修改,否则发生编译报错: [[文件:C语言中的常变量1.png|无|缩略图|800x800像素]]对局部变量 sum 加了 const 修饰之后,也是一样: [[文件:C语言中的常变量2.png|无|缩略图|801x801像素]]原因就是加了 const 修饰之后,就由变量变成了常变量,可以读取值,但不能修改值。 const 也可以加到类型声明后面: [[文件:C语言中的常变量3.png|无|缩略图|800x800像素]] 像上面“int const x = 0;”。 一般写成“int const x = 0;”这种 const 在类型声明后面的形式。<syntaxhighlight lang="c"> #include<stdio.h> const int g_max = 10; //全局常变量 int main() { int const x = 0; //局部常变量 const int sum = 20; //局部常变量 return 0; } </syntaxhighlight> === 为什么叫做“常变量”? === 说它是常量,因为定义的是变量;说它是变量,它的值又不容许被改变。 所以就叫它“常变量”。 === VS2019 和 VS2022 中默认局部变量未进行初始化编译报错 === [[文件:未初始化局部变量编译报错.png|无|缩略图|1300x1300像素]] === 全局变量未初始化,默认值是0 === <syntaxhighlight lang="c"> #include<stdio.h> int g_max; //全局变量未初始化,给的是0 int main() { printf("g_max = %d \n", g_max); return 0; } </syntaxhighlight><syntaxhighlight lang="console"> g_max = 0 </syntaxhighlight> '''<big>局部变量定义成 const 的时候,必须初始化,如果不初始化是没有意义的。</big>''' '''<big>不管是全局常变量还是局部常变量,定义的时候必须初始化。</big>''' '''<big>定义局部常变量的时候不进行初始化没有意义。</big>''' === C中 const 的缺陷 === <syntaxhighlight lang="c"> #include<stdio.h> int main() { const int len = 10; int ar[len]; return 0; } </syntaxhighlight> [[文件:C语言中的常变量4.png|无|缩略图|728x728像素]] c语言中,虽然用 const 修饰,但编译器仍然认为 len 是一个变量。 但 c++ 中的就可以这么写:<syntaxhighlight lang="c++"> #include<stdio.h> const int g_max = 0; int main() { const int x = 0; const int len = 10; int ar[len] = {1,2,3,4,5,6,7,8,9,10}; return 0; } </syntaxhighlight> 可以正常编译运行。 c中对常变量主要作为变量来考虑,不能用作数组大小的容量声明;c++中对常变量主要作为常量来考虑,可以用作数组大小的容量声明。 宏在预编译时替换,常变量在编译时替换; 宏没有类型,不开辟空间,只是一种替换;常变量有类型,要进行检查,开辟空间,常变量比宏更加安全。 '''<big>C++中不允许定义未初始化的全局常变量和局部常变量</big>'''
返回至
C语言中的常变量
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息