const常量详解
const常量的定义
在C语言中,采用编译指令#define方法定义常量,例如
#define PI 3,14
由于编译指令#define不是C++语句,所以行末不用分号,程序在预编译时把出现标识符PI全部用3,14替换,在程序预编译结束后,程序中就不再拥有PI这个标识符
PI不是变量,没有类型,不占用存储单元。
在C++中使用const定义常量有两种方式:
方式1:
const 类型 常量名 = 初始值;
例如:const double PI = 3,14;
方式2:
类型 const 常量名 = 初始值;
例如:double const PI = 3,14;
两种方式习惯上使用第一种。这里的PI拥有变量所有的属性,包含变量名,变量值,地址,只是在程序运行的过程中是固定不变的,只能读不能修改。
所以使用const定义常量后,由于值不能修改,不能赋值,所以在定义常量是就必须初始化,例如
const double pi;
pi = 3.14; //err
const 指针
1、指向常量的指针(常量指针)
1 2 3 4 5 | //常量指针 const char * name = "liuzeyu12a" ; //name指针指向一块常量 name = "helloworld" ; //此时name又重新执行了新的内存,指向h //*name = 'p'; //不能给常量赋值,所以const用来保护指针所指向的值不被修改 printf( "%c\n" , *name); //输出h |
指针的指向可以被修改,但是指向的值不能被修改。
2、指针常量
这里演示一种错误的方式:
1 2 3 4 5 6 7 | //指针常量 //char str[] = "liuzeyu12a"; //char* const pc = str; char * const pc = "liuzeyu12a" ; //指向常量 //pc = "helloworld"; //指针的指向不能被修改 *pc = 'G' ; printf( "%c " , *pc); |
常量是不能够被修改的 = =
正确的方法:
1 2 3 4 5 6 | //指针常量 char str[] = "liuzeyu12a" ; char * const pc = str; //pc = "helloworld"; //指针的指向不能被修改 *pc = 'G' ; printf( "%c " , *pc); //输出G |
指针指向不能被修改,但是指向的值可以被修改,这个被修改的一定只能是变量,常量不能够被修改。
3、指向常量的指针常量
1 2 3 4 | int a = 10, b = 20; const int * const pt = &a; pt = &b; //err *pt = 100; //err |
指针的指向和指针所指向变量的值都不能被修改。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具