C语言学习第10篇-const volatile 关键字剖析

本文探讨了C语言中的const和volatile关键字。const用于创建只读变量,但其值在运行期仍可变,现代编译器会将其存储在只读区域。volatile则指示编译器每次从内存读取变量值,适用于多线程环境或可能被外部因素改变的变量。文中通过实验分析了这两个关键字在函数参数和返回值上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

const

修饰的变量是只读的,本质还是变量

修饰的局部变量在栈上分配空间

修饰的全局变量在全局数据区分配空间

只在编译器有用,在运行期无用

在现代的C语言编译器里面,修改const全局变量会导致程序崩溃

注意:标准C语言编译器不会将const修饰的全局变量存储于只读存储区中,而是存储与可以修改的全局数据区,其值依然可以改变

实验1:const的变量本质

#include <stdio.h>
const int g_cc = 2;
int main()
{
    const int cc = 1;
   
    int* p = (int*)&cc;
   
    printf("cc = %d\n", cc);
   
    *p = 3;
   
    printf("cc = %d\n", cc);
   
    p = (int*)&g_cc;
   
    printf("g_cc = %d\n", g_cc);
   
    *p = 4;
   
    print
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeAllen嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值