C语言 const static 静态变量 全局变量 局部变量

本文详细介绍了C语言中的静态存储区、动态存储区,并讲解了存储类别的四种类型:自动(auto)、寄存器(register)、静态(static)和外部(extern)。重点探讨了static变量的特性和作用,包括静态局部变量和静态全局变量的区别。同时,文章还解释了如何区分const修饰的指针,并提到了const与指针结合的用法。
摘要由CSDN通过智能技术生成
  • 静态存储区:存放全局变量和静态变量,在执行程序前分配存储空间,占据固定的存储单元。
  • 动态存储区:存放函数的局部变量、函数的返回值、行参等。


存储类别分类:

  1. 自动(auto)非静态变量的局部变量即为自动变量。在C语言中,函数内没有存储类别说明的变量均视为自动变量。
  2. 寄存器(register)使用寄存器变量是为了提高执行效率,因为频繁地从内存单元存取变量相比于从寄存器中存取变量需要消耗更多的时间。只有局部变量才可以定义成寄存器变量。但不能大量使用寄存器,因为寄存器的数目有限。
  3. 静态(static)静态变量不属于动态存储,属于静态存储。静态局部变量的生存周期虽然是从程序开始运行到程序运行结束,但是它的作用域仍然与其作为自动变量的作用域相同。静态全局变量,只能在被定义的..c文件中使用,不能被其它.c文件中的函数调用。静态局部变量在它所在的函数被执行时进行初始化,之后再次执行该函数时,该静态局部变量不再进行初始化,保存的是上一次的运算结果。静态全局变量的初始化是在执行main()函数之前完成的,其静态全局变量的当前值由最近一次对它的赋值操作来决定。
  4. 外部(extern)外部存储类别定义方式为在全局变量类型前面加上关键字extern,如果没有指定全局变量的存储类别,则默认为extern。

如何区分const char*p 和char* const p?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值