c语言变量按作用域分类,C语言总结之变量的种类
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语言总结之变量的种类相关推荐
- python中变量的作用域有几种_Python中变量的作用域(variable scope)
http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...
- python函数变量的作用域_学不会的Python函数——变量作用域
1. LEGB函数 Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.我们先来看一段代码. 上述代码有两个变量a,当在test函数中输出变量a的值是,为什么 ...
- linux shell变量作用域,Shell变量的作用域:Shell全局变量、环境变量和局部变量
Shell变量的作用域(Scope),就是Shell变量的有效范围(可以使用的范围). 在不同的作用域中,同名的变量不会相互干涉,就好像A班有个叫小明的同学,B班也有个叫小明的同学,虽然他们都叫小明( ...
- c语言函数变量的作用域与生存期
目录 一.作用域与生存期的概念 1.变量的作用域 2.变量的生存期 二.全局变量与局部变量 1.局部变量的作用域与生存期 2.全局变量的作用域与生存期 一.作用域与生存期的概念 1.变量的作用域 在c ...
- c语言实训作业总结,c语言程序设计上机实践心得报告
c语言程序设计上机实践心得报告 班级:11 电信 2 姓名:莫金波 学号:1107032242012.12.28 惠州学院 HUIZHOU UNIVERSITY 我们专业的学生在专业老师的带领下进行了 ...
- jsp:param能不能传递变量_变量、作用域与内存
不要老叹息过去,它是不再回来的;要明智地改善现在.要以不忧不惧的坚决意志投入扑朔迷离的未来. 文章目录 变量.作用域与内存 前言 相比于其他语言,JavaScript 中的变量可谓独树一帜.正如 EC ...
- Javascript变量、作用域与内存
通过变量使用原始值与引用值 理解执行上下文 理解垃圾回收 ES规定,JS变量是松散类型的. 由于没有规定定义变量必须包含什么数据类型,变量的值和数据类型在脚本生命周期内可以改变. ES变量有2种不同类 ...
- C语言程序设计教程 北京邮电,C语言程序设计教程(第3版)/ 杨路明 9787563543403 北京邮电...
商品描述 亲,此书是正版二手书,七八成新,不缺页,有笔记划线不影响阅读,择优发货.二手书默认没有光盘等附件哦.如需要请联系客服确认. 祝:学业有成,万事如意!基本信息书名:C语言程序设计教程(第3版) ...
- 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定 ...
- R语言使用两个分类变量创建双向表(Two Way Table、两个分类变量的频率表)实战: 矩阵的双向表、dataframe的双向表、条形图和马赛克图来可视化频率表
R语言使用两个分类变量创建双向表(Two Way Table.两个分类变量的频率表)实战: 矩阵的双向表.dataframe的双向表.条形图和马赛克图来可视化频率表 目录
最新文章
- 【畅谈百度轻应用】云时代·轻应用·大舞台
- 一文掌握明年物联网传感器市场!2022中国AIoT产业全景图谱报告新鲜出炉
- linux下dump命令,Linux dump命令
- Java黑皮书课后题第10章:**10.27(实现StringBuffer类)在Java库中提供了StringBuffer类,给胡你自己对下面方法的实现(将新类命名为MyStringBuilder1)
- linux if 判断文件数量,linux if判断命令
- stm32呼吸灯程序_学习STM32从点灯开始!
- 线段树位运算的三种操作(|,^,)
- dnf机器人猜数字奖励_DNF:周年庆策划啪啪打脸,工作人员也出错误,难道又是临时工的锅?...
- O036、Snapshot Instance 操作详解
- Apache Ranger——Hadoop ACL控制工具
- Jenkins 构建触发器操作详解
- python or 和and的优先级_python中not、and和or的优先级与详细用法介绍
- [转载]使用 Abbot 框架自动化测试 Eclipse 插件的用户界面,第 1 部分
- win10如何打来计算机的工具,电脑系统教程:Win10自带解压缩文件工具如何使用
- 无损音乐ape转wav图文教程
- iText7-pdfoffice-office文件转pdf
- 使用 kind 1 分钟启动一个本地 k8s 开发集群
- python风控模型举例_一文搞定风控模型6大核心指标(附代码)
- 篮球赛日程表_横县校椅青桐2019春节篮球赛火热开赛!快收好赛程表!
- Windows powershell Terminal;linux tmux终端分屏使用;tabby终端使用
热门文章
- 5.文件操作 --- 系统调用
- 11. Magento路由分发过程解析(一):在前端控制器中获取路由对象
- php中的数值型字符串相加 相比较( ==)
- 问题:ajaxSuccess() ajaxComplete() ajaxError()....??? 参数event xhr options的用法
- maven私服nexus-bundle的安装和启动
- Linux安装配置redis 、启动redis、redis设置密码
- 跨域资源共享(CORS)-漏洞整理
- (转载)SQL基础-- 约束(CONSTRAINT)
- 【matlab】在图中插入矩形(框or阴影)
- 高性能的分布式内存对象缓存系统Memcached