深入c语言_存储类型

来源:互联网 发布:站长工具查询端口 编辑:程序博客网 时间:2024/05/17 00:51

    了解计算机的都知道内存有很多种,比如寄存器,内存,内存中又有很多段,代码段,数据段,堆栈等等与编程相关的,数据段还可以细分,初始化的,未初始化的,只读的等等。所以一个变量,可以在多种地方存储。变量的存储类型就是告诉变量存储在哪些地方的,虽然这么说不太严谨,因为有寄存器类型的导致的,但是可以这么理解。最重要的是根据变量的存储类型可以确定变量的生命周期。这个很好理解,栈的变量和堆的变量以及数据段的变量生命周期肯定是不一样的,应为栈的变量在出栈后就不能用了,堆里的变量free后就不能用了。

    我们把内存在这里分成三类,寄存器,运行时的堆栈,普通内存。就是把除了寄存器的内存在另一个角度看待又分了一下。

    具有代码块类型的变量的存储类型是auto,对应的是堆栈中,离开代码块后变量便销毁了。但是如果在代码块中的变量被static修饰后,它的存储类型就变成了静态,对应的是普通内存。

    auto类型的变量被register修饰后,它都有可能被存放到寄存器中,之所以说是有可能是因为,一个cpu里寄存器的数量非常少,而且寄存器都有不同的作用,所以给我们使用的寄存器不多,如果可以的话,cpu就把我们的变量存到寄存器,因为它只能修饰auto变量,所以它的声明周期和auto一样。


原创粉丝点击