C语言进阶——全局变量
全局变量
·定义在函数外面的变量是全局变量
·全局变量具有全局的生存期和作用域
·它们与任何函数都无关
·在任何函数内部都可以使用它们
全局变量初始化
·没有做初始化的全局变量会得到0值
·指针会得到NULL值
·只能用编译时刻已知的值来初始化全局变量
·它们的初始化发生在main函数之前
被隐藏的全局变量
·如果函数内部存在与全局变量同名的变量,则全局变量被隐藏
静态本地变量-1
·在本地变量定义是加上static修饰符就成为静态本地变量
·当函数离开的时候,静态本地变量会继续存在并保持其值
·静态本地变量的初始化只会在第一次进入这个函数做,以后进入函数时会保持上次离开时的值
静态本地变量-2
·静态本地变量实际上是特殊的全局变量
·它们位于相同的内存区域
·静态本地变量具有全局的生存期,函数内的局部作用域
*返回指针的函数
·返回本地变量的地址是危险的(每次离开后,本地变量分配的内存被释放,下次重新进入某函数时,又重新分配内存给本地变量)
·返回全局变量或静态本地变量的地址是安全的
·返回在函数内malloc的内存是安全的,但是容易造成问题
·以上的方法都不建议,最好的做法就是返回传入的指针
tips
·不要使用全局变量来在函数间传递参数和结果
·尽量避免使用全局变量
·丰田汽车的案子
· *使用全局变量和静态本地变量的函数是线程不安全的
C语言进阶——全局变量的更多相关文章
- C语言:全局变量在多个c文件中公用的方法 [转]
用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用. 举例说明:项目文件夹project下有main. ...
- 【R笔记】R语言进阶之4:数据整形(reshape)
R语言进阶之4:数据整形(reshape) 2013-05-31 10:15 xxx 网易博客 字号:T | T 从不同途径得到的数据的组织方式是多种多样的,很多数据都要经过整理才能进行有效的分析,数 ...
- 《C语言进阶剖析》课程目录
<C语言进阶剖析>学习笔记 本文总结自狄泰软件学院唐佐林老师的<C语言 ...
- 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目入口与路由EP01
书接上回,我们已经安装好Iris框架,并且构建好了Iris项目,同时配置了fresh自动监控项目的实时编译,万事俱备,只欠东风,彩虹女神蓄势待发.现在我们来看看Iris的基础功能,如何编写项目入口文件 ...
- R语言进阶
一.初学入门:<R in Action><The Art of_R Programming>入门者可首选两本,前者从统计角度入手,分高中低三部分由浅入深的讲解了如何用R来实现统 ...
- 用汇编语言研究C语言的全局变量、局部变量、参数、返回值放在哪里
前提知识 c0s调用main函数的地址: 11ah main函数的连接地址: 01fah 一.全局变量与局部变量 测试程序 int a1,a2,a3; void f(void); void g(voi ...
- 苹果新的编程语言 Swift 语言进阶(八)--属性
属性是特定类.结构或枚举的相关值,属性根据作用域不同分为实例属性与类型属性,还可以根据是否存储分为存储属性和计算属性. 1.1 实例属性 为一个类.结构或枚举定义的属性默认属于实例属性,即该属性属于为 ...
- C语言进阶——Day 1
C语言提高笔记 Day 1 小数据赋给大变量,首位是1则在前面自动补充1,首位是0则在前方自动补充0. 大数据赋给小变量,低位字节对齐,truncate截断,有可能会造成数据丢失. 程序和进程的差别: ...
- [C语言]进阶|程序结构
------------------------------------------------------------------------------------ 全局变量: // main.c ...
随机推荐
- H3C在设备上使用TFTP服务
- HDU6383p1m2(二分)
补个题.. 传送门 点我 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...
- hive查询中文乱码问题
问题1. hue中中文字符乱码问题,重现步骤如下 create external table test_1_txt (id int, name varchar(100)) location '/tm ...
- Oracle单引号拼接和替换
1.oracle拼接一个单引号: 正常写法:''''|| 由于单引号存在转义,第一个和最后一个是指定你要使用的字符,第二个’是单引号的转义字符,所以需要第三个‘才是真正你要拼接的那个. 也可以用 ch ...
- There is already an open DataReader associated with this Connection which must be closed first EF
废话不多说,直接 上图,及解决办法.不过问题还不是太清楚到底为什么会出现这个情况..........
- JavaScript DOM事件对象的两个小练习 | 学习内容分享
Event 对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 事件通常与函数结合使用,函数不会在事件发生前被执行! 本文用于记录个人学习过程 ...
- 异常 A component named TableViewForm already exists 解决方法
用navicate连接mysql,打开数据库表格,出现 A component named TableViewForm already exists 异常信息,如下图: 1.异常原因: 打开的表格数 ...
- $CF949D\ Curfew$ 二分/贪心
正解:二分/贪心 解题报告: 传送门$QwQ$ 首先这里是二分还是蛮显然的?考虑二分那个最大值,然后先保证一个老师是合法的再看另一个老师那里是否合法就成$QwQ$. 发现不太会搞这个合不合法的所以咕了 ...
- $[TJOI2017]$ 可乐 矩阵优化$dp$
\(Sol\) 设\(f_i\)为到第\(i\)秒的方案数,显然\(f_i=\)在第\(i\)秒前爆炸的方案数+在第\(i\)秒爆炸的方案数+在第\(i\)秒停下的方案数+在第\(i\)秒走向下一个城 ...
- Windows Live Writer 语法高亮
1.WindowsLiveWriter.CNBlogs.CodeHighlighter.rar 这个插件生成的高亮代码与网页上的一模一样,插入后即可立即显示效果,不过貌似它必须联网才能实时显示效果,因 ...