关于static和const修饰的变量和内存结构

const 用来定义常量

static 修饰一个变量的声明周期,

对于局部变量,在调用后不会销毁,而是保持值,

对于全局变量,static后的变量其他文件不可见,extern 也不行

区别

const:

  • const 声明一个常量,这意味着一旦初始化后,它的值就不能被修改。

static:

  • static 关键字用于声明变量的存储周期为静态的。
  • 对于局部变量,使用 static 表示该变量的值在函数调用之间保持不变;对于全局变量,使用 static 使其作用域限制在声明它的文件内,其他文件不能访问。
  • 使用场景:static 可用于函数内的变量以保持其值(状态变量),或在全局变量和函数上,以限制其作用域只在定义它的文件内。

联系

  • 1. const 修饰符
    • const 用于声明一个常量,意味着一旦被初始化后,其值就不能被修改。const 可以用来修饰不同类型的变量(如整数、浮点数、指针等),确保变量的值不会被改变。
    • 对于 const 修饰的变量,任何试图修改该变量的值的操作都将引起编译器报错。这包括直接修改以及通过非 const 指针间接修改。

组合使用 static 和 const

当 static 和 const 一起使用时,如 static const int x = 100;,这意味着变量 x 是一个在单个文件内可见的常量,其值在整个程序运行期间不变,并且在函数调用之间保持其值。

总结

const 修饰后的变量不能被写入或修改。

  • static 修饰的变量可以被写入和修改,除非它们也被 const 修饰。
  • static 主要影响变量的存储期和链接可见性,而 const 影响变量的可修改性。

注意

  • 虽然 被 const 修饰的变量本质上仍然是一个变量,它拥有内存地址和存储空间,只是其值不能被更改。
  • const 修饰的指针(特别是当 const 修饰指向的数据时)不能用来修改其指向的数据,确保数据的不变性。
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值