C程序一直由下列部分组成:

  1. 正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;
  2. 初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。
  3. 非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。
  4. 栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息,即保存现场(返回地址;环境信息)。
  5. 堆——动态存储分。

static关键字的作用:

 

  1. 全局静态变量

    在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。

  1).内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)

2).初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)

  3).作用域:全局静态变量在声明他的文件之外是不可见的(即使添加了关键字extern)。准确地讲从定义之处开始到文件结尾

  定义全局静态变量的好处:

    <1>不会被其他文件所访问,修改

    <2>其他文件中可以使用相同名字的变量,不会发生冲突。

2. 局部静态变量

在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。

  1. 内存中的位置:静态存储区
  2. 初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)
  3. 作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束。

【注】:当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能再对他进行访问。

3.static函数(也叫内部函数)
  只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用

http://www.jcwcn.com/article-31891-1.html

最新文章

  1. label中设置某些指定的字体的属性设置(Color,Size,FontColor)
  2. sqlserver 行列转换
  3. [Unity3D插件]2dToolKit系列三 碰撞检测功能的实现以及障碍物的随机摆放
  4. Symantec Backup Exec恢复数据库
  5. Hibernate中createCriteria即QBC查询的详细用法 .Hibernate中createCriteria即QBC查询的详细用法 .
  6. RabbitMQ 原文译04--路由
  7. HttpClient基础教程
  8. LPC1768外部中断与GPIO中断
  9. Convert.ToInt32、(int)和int.Parse三者的区别
  10. Linux-day1-pdf课件
  11. .net 发布程序时出现“类型ASP.global_asax同时存在于...”错误的解决办法
  12. ES6新增的数据类型Map和Set。
  13. DataAnnotations - InverseProperty Attribute:
  14. 洗礼灵魂,修炼python(15)--列表进阶话题—&gt;列表解析/列表生成器
  15. 网络通信协议八之UDP协议详解
  16. yarn基本命令
  17. DevOps:从理念到实施
  18. ZooKeeper安装及配置(Windows系统下)
  19. &quot;字节跳动杯&quot;2018中国大学生程序设计竞赛-女生专场 Solution
  20. DateTime Toxxx() 方法获取时间

热门文章

  1. 【Android病毒分析报告】 - ZxtdPay 吸费恶魔
  2. asp.NET配置
  3. 前端CSS规范大全
  4. HDU 4548(美素数)
  5. 解决servlet乱码问题
  6. poj 1838
  7. 【xcode】错误之Could not launch &quot;&quot; failed to get the task for process
  8. django中间件templates写法
  9. UNIX网络编程5 POSIX 消息队列
  10. sortable.js 华丽丽的排序