C语言进阶——全局变量
2024-09-06 18:16:15
全局变量
·定义在函数外面的变量是全局变量
·全局变量具有全局的生存期和作用域
·它们与任何函数都无关
·在任何函数内部都可以使用它们
全局变量初始化
·没有做初始化的全局变量会得到0值
·指针会得到NULL值
·只能用编译时刻已知的值来初始化全局变量
·它们的初始化发生在main函数之前
被隐藏的全局变量
·如果函数内部存在与全局变量同名的变量,则全局变量被隐藏
静态本地变量-1
·在本地变量定义是加上static修饰符就成为静态本地变量
·当函数离开的时候,静态本地变量会继续存在并保持其值
·静态本地变量的初始化只会在第一次进入这个函数做,以后进入函数时会保持上次离开时的值
静态本地变量-2
·静态本地变量实际上是特殊的全局变量
·它们位于相同的内存区域
·静态本地变量具有全局的生存期,函数内的局部作用域
*返回指针的函数
·返回本地变量的地址是危险的(每次离开后,本地变量分配的内存被释放,下次重新进入某函数时,又重新分配内存给本地变量)
·返回全局变量或静态本地变量的地址是安全的
·返回在函数内malloc的内存是安全的,但是容易造成问题
·以上的方法都不建议,最好的做法就是返回传入的指针
tips
·不要使用全局变量来在函数间传递参数和结果
·尽量避免使用全局变量
·丰田汽车的案子
· *使用全局变量和静态本地变量的函数是线程不安全的
最新文章
- 前端自动化构建工具gulp的使用总结
- memcache/memcached安装教程并应用Tinkphp3.2
- Sharif University CTF 2016 -- Android App
- iOS 中contraints居中对齐的一点心得
- VMware 虚拟机Red Hat 5.9 交换区及硬盘空间调整
- TCL/Expect交互式自动化测试概要 - - ITeye技术网站
- 将requirejs进行到底(一)
- [转]C++ list 类学习笔记
- 将主机IDS OSSEC日志文件存入MYSQL的方法
- Android 开发佳站3
- swift 进阶笔记 (一) —— 可选型
- PHP多维数组元素操作类
- Java 泛型 泛型方法
- mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- Shell 常见理论问答
- (转) AdversarialNetsPapers
- thymeleaf 字面量
- H.264 White Paper学习笔记(一)总览
- 抓取错误之onerror
- idea 配置http代理