C语言拾遗--static
2024-10-19 02:22:12
C程序一直由下列部分组成:
- 正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;
- 初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。
- 非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。
- 栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息,即保存现场(返回地址;环境信息)。
- 堆——动态存储分。
static关键字的作用:
1. 全局静态变量
在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。
1).内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)
2).初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)
3).作用域:全局静态变量在声明他的文件之外是不可见的(即使添加了关键字extern)。准确地讲从定义之处开始到文件结尾
定义全局静态变量的好处:
<1>不会被其他文件所访问,修改
<2>其他文件中可以使用相同名字的变量,不会发生冲突。
2. 局部静态变量
在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。
- 内存中的位置:静态存储区
- 初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)
- 作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束。
【注】:当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能再对他进行访问。
3.static函数(也叫内部函数)
只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用
【http://www.jcwcn.com/article-31891-1.html】
最新文章
- label中设置某些指定的字体的属性设置(Color,Size,FontColor)
- sqlserver 行列转换
- [Unity3D插件]2dToolKit系列三 碰撞检测功能的实现以及障碍物的随机摆放
- Symantec Backup Exec恢复数据库
- Hibernate中createCriteria即QBC查询的详细用法 .Hibernate中createCriteria即QBC查询的详细用法 .
- RabbitMQ 原文译04--路由
- HttpClient基础教程
- LPC1768外部中断与GPIO中断
- Convert.ToInt32、(int)和int.Parse三者的区别
- Linux-day1-pdf课件
- .net 发布程序时出现“类型ASP.global_asax同时存在于...”错误的解决办法
- ES6新增的数据类型Map和Set。
- DataAnnotations - InverseProperty Attribute:
- 洗礼灵魂,修炼python(15)--列表进阶话题—>;列表解析/列表生成器
- 网络通信协议八之UDP协议详解
- yarn基本命令
- DevOps:从理念到实施
- ZooKeeper安装及配置(Windows系统下)
- ";字节跳动杯";2018中国大学生程序设计竞赛-女生专场 Solution
- DateTime Toxxx() 方法获取时间