day4[涨小知识]

程序分段
在程序运行后悔加载到内存中,从而将内存分为多个段其中权限不同。
1.代码段(text):程序中二进制指令存储在这里,只读权限
2.只读段:存储常量,字符串字面值。
3.未初始化数据段(bss):静态数据段
4.全局段(data):存储全局变量

以上可用size 程序名 一般./a.out查看
-------------------------------------
5.栈:局部变量。由操作系统,自动申请自动释放
6.由程序员自己手动管理。
然后是存放在其中的变量
1.全局变量:定义在函数外
存储位置:未被初始化存储在bss,被初始化了存储在data
作用:整个程序,比如说在a.c定义的全局变量,在b.c也可以使用
生命周期:main函数执行前就被定义出,程序运行结束后在释放

bss,data不会被自动申请自动释放

  1. 局部变量:定义在函数内。
    存储位置:栈
    作用域:所在的函数内
    生命周期:从定义语句开始函数执行结束,函数每次调用就会进行一遍定义,释放
    3.块变量:定义在if,for,while等语句块内
    存储位置:栈
    作用域:所在语句块的大括号内
    生命周期:从定义语句开始~函数执行结束
    修饰变量的关键字

猜你喜欢

转载自www.cnblogs.com/Maoey/p/10849851.html