嵌入式学习笔记-变量存储方式和生存周期

一、局部变量和全局变量

局部变量:在函数内部、复合语句内部定义的变量称为局部变量,主函数定义的变量也只在主函数中生效;下面代码中,变量i和j就是局部变量

#include<stdio.h>

int main()
{
    int i;
    int j;
    return 0;

}

全部变量:在函数外定义的变量为全局变量,为了区分全局变量和局部变量,习惯将全局变量第一个字母大写表示,下面代码中,变量i、j、c都是全局变量,但是作用域不一样。变量c在主函数中无法使用。

#include<stdio.h>

int i;
int j;
int main()
{
    
    return 0;
}

char c;
void print()
{


}

二、变量的存储方式

  1. 变量的存储方式分为静态存储方式和动态存储方式,静态存储方式是指运行期间由系统分配的固定的存储空间的方式,动态存储方式是指程序运行期间根据需要进行动态分配存储空间的方式;
  2. 变量和函数的两个属性:数据类型和存储类别,存储类别分为自动的(Auto)、静态的(static)、寄存器的(resgister)、外部的(extern)
  • 自动变量:函数中的局部变量,如果不声明为static类型,都是自动变量。调用该函数时,系统会临时分配内存空间,调用结束后将空调释放。不声明变量类型默认为自动变量;
Auto int b;
  • 静态局部变量:用static声明的变量称为静态局部变量。在静态存储区存储,程序运行期间不释放,对静态局部变量只赋一次初值,每次调用函数时不在重新赋初值,保留上次函数调用结束的值。不赋初值的话,默认赋0或者‘\0’;静态局部变量虽在函数调用结束后仍然存在,但是其他函数不能引用;
static int c;
  • 寄存器变量:对于使用频繁的变量可以定义为寄存器变量将变量存储在CPU的寄存器
 register int i;

    3.一般使用关键字extern来扩展全局变量的作用域。在一个文件内,函数下方定义的全局变量在上方无法使用,但是可以用过extern来进行扩展。下述代码中变量a就可以在主函数中使用。文件之间想用同一外部变量,只需在文件中对变量进行外部声明即可。

#include<stdio.h>

int main()
{
    extern int a;
    return 0;
}

int a;
void print()
{


}

三、总结

       自动变量存储在动态存储区域中,静态变量存储在静态存储区域中,寄存器变量存储在CPU的寄存器中。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

27努力成为程序员

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

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

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

打赏作者

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

抵扣说明:

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

余额充值