静态是“静态”的意思;
静态关键字可用于用c语言限定变量和函数。
1.修饰变量;
)1)静态限定全局变量称为静态全局变量,其范围是当前源文件,在其他文件中无法使用” extern “关键字进行引用。 如果在定义时不分配初始值,静态全局变量默认初始化为0,并且在编译完成后只初始化一次。 存在于内存分区内的静态区域中。
)2)静态限定的局部变量称为静态局部变量,其作用域位于当前函数或局部代码段)中,如果静态局部变量在定义时不提供初始值,则缺省初始化为0 ),编译完成后一次
2.修饰函数;
静态限定函数表示函数的范围仅在当前文件中。 通常用于不希望向外部开放函数,而仅用于在当前文件中实现其他函数。
3.补充;
刚才,当static说要修饰变量时,我们讨论了内存分区中的静态区域。 静态区域用于存储静态变量静态全局变量和静态局部变量)和常规全局变量未由static和const限定)。 以下是其他分区的说明简单地说,有四个大内存分区)。
常数字段:存储字符串常数和用“const”限定的全局变量。 这些变量不能通过常规手段更改。 生命周期由操作系统回收,直到程序结束;
静态区域:存储全局变量和静态变量。 这些变量只初始化一次编译完成后)。 生命周期由操作系统回收,直到程序结束;
堆栈区域:保存局部变量。 这些变量的生命周期比较短,由操作系统分配回收; 请注意,如果未指定初始值,局部变量将是随机值。 也就是说,这是操作系统最后使用此内存释放之前的值。
堆空间:堆空间由OS维护,但由程序员分配使用,用malloc函数向OS申请,使用完毕后用free函数释放的程序员在使用后未进行释放时,会导致内存泄漏,程序结束操作系统回收未释放的堆内存请注意,在堆内存成功申请后,初始值为0;
以上详细说明了与static关键字和c语言的各变量类型对应的内存分区。 我也是跳跃的睫毛膏。 关于内存分区,我个人觉得在初学c语言时,很难理解。 请等待c语言的基础知识哪怕一次也能返回并理解。
本人跳的睫毛膏,如有错误请老师指正,不胜感激; 支持转载。 也请注明出处;
Try harder,you can do this!