C语言入门:进阶篇02 进程

进程映象

    程序:存储在磁盘上的可执行文件(二进制文件、脚本文件)

    进程:正在系统中运行的程序

    进程映象:进程的内存分布情况

存放内容特点
text     代码段二进制指令、常量权限只读,强制修改会产生段错误
data    数据段初始化的全局变量、初始化静态局部变量
bss     静态数据段未初始化的全局变量(初始化为0也在该段),未初始化的静态局部变量(初始化为0也在该段)该段内存中的数据在程序开始前会自动清0
stack   栈局部变量、块变量会随着程序的运行不断申请、释放,由操作系统管理,使用方便。内存小
heap    堆由程序员手动申请、释放的内存足够大,

局部变量和全局变量

含义存储位置生命周期适用范围
全局变量定义在函数外的变量data(初始化)或bss(未初始化)程序开始到程序结束程序的任何位置都可用
局部变量定义在函数内的变量stack 栈内存从函数开始到函数结束只能在该函数内使用
块 变 量定义在if/for/while等语句块内的变量stack 栈内存从语句块开始到语句块结束只能在语句块内使用

       *注意: ① 同名的局部变量会屏蔽同名的全局变量

                    ② 同名的块变量会屏蔽同名的全局、局部变量

                    ③ 因此建议全局变量首字母大写,局部变量全部小写

类型限定符

1、auto

        用于定义自动申请,自动释放的变量(局部变量),不加就代表加了

        auto num = 10;

        auto num = 3.14;

* 注意:① 不能用它修饰全局变量

             ② C11语法标准中用于自动类型识别

2、extern

        用于声明外部变量(全局变量),告诉编译器此变量在程序的其他地方已经定义,先让程序通过编译,如果在链接时找不到该变量依然会报错。

    改变存储位置:

        改变局部变量的存储位置,由stack改为data(初始化)或者bss(未初始化)

    延长生命周期:

        由于内存段存储位置发生改变,因而延长局部变量生命周期,直到程序结束释放

    限制作用范围:

        会限制全局变量的使用范围,限制只能在本文件内使用

*注意:① 使用static修饰全局变量,可以防止变量被别的文件使用,以及防止命名冲突

            ② 不建议在extern时赋值,它只是声明

            ③ static 静态 初始化语句只有第一次生效

3、const

        “保护”变量的值不被显示地修改

*注意:① 如果通过内存进行修改还是可以改的(指针)

            ② 使用const修饰data段数据,那么该数据会存储到text段中,如果强制修改会段错误。

4、volatile

    C编译器会对普通变量的取值进行“取值优化”,只要在使用变量过程中该变量没有显式改变,那么便一起会直接使用上一次的结果,而不会每次都去内存读取数据。加上volatile修饰,让编译器不要对该变量进行“取值优化”。在驱动、硬件编程、多线程编程时使用。

5、register

        存储介质:硬盘 -> 内存 -> 高级缓存 -> 寄存器 -> cpu

        申请把变量的存储介质由内存改为寄存器,但是由于寄存器数量有限,不一定百分百成功

*注意:寄存器变量不能取地址

6、typedef

    类型重定义

    如果在定义变量前,加上typedef,那么原本的变量名变成了这种数据类型,可以向数据类型一样定义变量。常常用于缩短变量名。注意不是替换

   例如:

    typedef int num; //类型重定义

    num n1;

    #define num int //替换

    num n1;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

就酱77叭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值