1.变量的三个属性

作用域有四种:代码块作用域,文件作用域,原型作用域(本文中可忽略),函数作用域(可忽略)

链接属性有三种:external、internal、none

存储地点有三种:内存存储区,堆栈区,寄存器(可忽略)

详细内容在另一章节。

2.变量的分类

按变量的作用域可以分为全局变量和局部变量,按变量的存储期可分为自动存储和静态存储。

3. C变量的种类

3.1 全局变量

定义:在函数(代码块)之外声明的变量,称为全局变量。

说明:当程序分为多个源文件编译时,全局变量可以从其他源文件中引用。

作用域:本源文件,即文件作用域

链接属性:external(这个属性表示其他源文件可以引用此变量)

存储地点:内存

示例:

int i;

int main(void)

{}

3.2 加上static的的全局变量

定义:在代码块之外的静态变量。

说明:其他源文件不能应用该全局变量,只能在当前源文件引用。

作用域:本源文件,即文件作用域

连接属性:internal(其他源文件不可引用此变量)

存储地点:内存

static作用:改变变量的链接属性。

示例:

static int i;

int main(void)

{}

3.3 局部变量

定义:在函数(代码块)内部声明的变量,称为局部变量。

说明:(不知道写什么好...)

作用域:代码块内部(使用{ }括起来的范围),即代码块作用域

链接属性:none

存储地点:一般在堆栈,即自动(auto)变量

示例:

int main(void)

{

int i;

}

3.4 带有static的局部变量

定义:在代码块内部的静态变量。

说明:函数调用完毕或者代码块结束之后,此变量不会消失。

作用域:代码块内部

链接属性:none

存储地点:内存

static的作用:改变变量的存储类型

示例:

void foo(void)

{

static int i;

}

4.总结

最后借用《C和指针》第三章的一个表格进行总结

变量类型总结

变量类型

声明的位置

是否存于堆栈

作用域

如果声明为static

全局

所有代码块之外

从声明处到文件尾

不允许从其他源文件访问

局部

代码块起始处

整个代码块

变量不存储于堆栈中,它的值在程序整个执行期一直保持

参考资料:

前桥和弥, 吴雅明.征服C指针[M]. 人民邮电出版社, 2013.

c语言变量按作用域分类,C语言总结之变量的种类相关推荐

  1. python中变量的作用域有几种_Python中变量的作用域(variable scope)

    http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...

  2. python函数变量的作用域_学不会的Python函数——变量作用域

    1. LEGB函数 Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.我们先来看一段代码. 上述代码有两个变量a,当在test函数中输出变量a的值是,为什么 ...

  3. linux shell变量作用域,Shell变量的作用域:Shell全局变量、环境变量和局部变量

    Shell变量的作用域(Scope),就是Shell变量的有效范围(可以使用的范围). 在不同的作用域中,同名的变量不会相互干涉,就好像A班有个叫小明的同学,B班也有个叫小明的同学,虽然他们都叫小明( ...

  4. c语言函数变量的作用域与生存期

    目录 一.作用域与生存期的概念 1.变量的作用域 2.变量的生存期 二.全局变量与局部变量 1.局部变量的作用域与生存期 2.全局变量的作用域与生存期 一.作用域与生存期的概念 1.变量的作用域 在c ...

  5. c语言实训作业总结,c语言程序设计上机实践心得报告

    c语言程序设计上机实践心得报告 班级:11 电信 2 姓名:莫金波 学号:1107032242012.12.28 惠州学院 HUIZHOU UNIVERSITY 我们专业的学生在专业老师的带领下进行了 ...

  6. jsp:param能不能传递变量_变量、作用域与内存

    不要老叹息过去,它是不再回来的;要明智地改善现在.要以不忧不惧的坚决意志投入扑朔迷离的未来. 文章目录 变量.作用域与内存 前言 相比于其他语言,JavaScript 中的变量可谓独树一帜.正如 EC ...

  7. Javascript变量、作用域与内存

    通过变量使用原始值与引用值 理解执行上下文 理解垃圾回收 ES规定,JS变量是松散类型的. 由于没有规定定义变量必须包含什么数据类型,变量的值和数据类型在脚本生命周期内可以改变. ES变量有2种不同类 ...

  8. C语言程序设计教程 北京邮电,C语言程序设计教程(第3版)/ 杨路明 9787563543403 北京邮电...

    商品描述 亲,此书是正版二手书,七八成新,不缺页,有笔记划线不影响阅读,择优发货.二手书默认没有光盘等附件哦.如需要请联系客服确认. 祝:学业有成,万事如意!基本信息书名:C语言程序设计教程(第3版) ...

  9. C语言基础1:初识C语言(转义、注释;数组、操作符、反码、补码、static、define、指针、结构体常变量;局部变量;作用域、生命周期)

    文章目录 C语言基础1:初识C语言 1.C语言简介 1.1什么是C语言 1.2C语言的发展 2.第一个C语言程序 2.1创建项目 2.2添加源文件 2.3写代码 3.数据类型 4.变量.常量 4.1定 ...

  10. R语言使用两个分类变量创建双向表(Two Way Table、两个分类变量的频率表)实战: 矩阵的双向表、dataframe的双向表、条形图和马赛克图来可视化频率表

    R语言使用两个分类变量创建双向表(Two Way Table.两个分类变量的频率表)实战: 矩阵的双向表.dataframe的双向表.条形图和马赛克图来可视化频率表 目录

最新文章

  1. 【畅谈百度轻应用】云时代·轻应用·大舞台
  2. 一文掌握明年物联网传感器市场!2022中国AIoT产业全景图谱报告新鲜出炉
  3. linux下dump命令,Linux dump命令
  4. Java黑皮书课后题第10章:**10.27(实现StringBuffer类)在Java库中提供了StringBuffer类,给胡你自己对下面方法的实现(将新类命名为MyStringBuilder1)
  5. linux if 判断文件数量,linux if判断命令
  6. stm32呼吸灯程序_学习STM32从点灯开始!
  7. 线段树位运算的三种操作(|,^,)
  8. dnf机器人猜数字奖励_DNF:周年庆策划啪啪打脸,工作人员也出错误,难道又是临时工的锅?...
  9. O036、Snapshot Instance 操作详解
  10. Apache Ranger——Hadoop ACL控制工具
  11. Jenkins 构建触发器操作详解
  12. python or 和and的优先级_python中not、and和or的优先级与详细用法介绍
  13. [转载]使用 Abbot 框架自动化测试 Eclipse 插件的用户界面,第 1 部分
  14. win10如何打来计算机的工具,电脑系统教程:Win10自带解压缩文件工具如何使用
  15. 无损音乐ape转wav图文教程
  16. iText7-pdfoffice-office文件转pdf
  17. 使用 kind 1 分钟启动一个本地 k8s 开发集群
  18. python风控模型举例_一文搞定风控模型6大核心指标(附代码)
  19. 篮球赛日程表_横县校椅青桐2019春节篮球赛火热开赛!快收好赛程表!
  20. Windows powershell Terminal;linux tmux终端分屏使用;tabby终端使用

热门文章

  1. 5.文件操作 --- 系统调用
  2. 11. Magento路由分发过程解析(一):在前端控制器中获取路由对象
  3. php中的数值型字符串相加 相比较( ==)
  4. 问题:ajaxSuccess() ajaxComplete() ajaxError()....??? 参数event xhr options的用法
  5. maven私服nexus-bundle的安装和启动
  6. Linux安装配置redis 、启动redis、redis设置密码
  7. 跨域资源共享(CORS)-漏洞整理
  8. (转载)SQL基础-- 约束(CONSTRAINT)
  9. 【matlab】在图中插入矩形(框or阴影)
  10. 高性能的分布式内存对象缓存系统Memcached