OC笔记 - 静态变量和全局变量的区别
2021/10/24 6:11:48
本文主要是介绍OC笔记 - 静态变量和全局变量的区别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
全局变量 | 全局静态变量
1 - 若程序由一个源文件构成时,全局变量与全局静态变量没有区别
2 - 若程序由多个源文件构成时,全局变量与全局静态变量不同
① 全局静态变量是定义该变量的源文件所独享,就是说全局静态变量对组成该程序的其它源文件是无效的
② 全局变量可以在所有源文件里调用,除了本文件,其它文件可以通过 extern 的方式引用
3 - 静态全局变量的作用
① 不必担心其它源文件使用相同变量名,彼此相互独立
② 在某源文件中定义的静态全局变量不能被它它源文件使用或修改
③ 只能在本文件中使用,不允许在其它文件里调用
4 - 代码示例:在 TestDemo.m 文件里分别声明全局变量 | 全局静态变量,在 main.m 文件中进行验证
// - TestDemo.m
1 #import "TestDemo.h" 2 // 声明一个全局变量 3 NSInteger cellWidth = 100; 4 5 // 声明一个静态全局变量 6 static NSInteger cellHeight = 200; 7 @implementation TestDemo 8 9 @end
// - main.m
1 #import <Foundation/Foundation.h> 2 //----------------------------全局变量 3 //// 声明相同的全局变量 4 //NSInteger cellWidth; // 编译报错:同一个工程中,两个不同 .m 文件中同样的全局变量不能同时存在 5 6 // 解决办法:使用 extern 关键字 7 //extern NSInteger cellWidth = 200; // 编译报错:不能再次初始化 8 extern NSInteger cellWidth; 9 10 //----------------------------静态全局变量 11 //extern NSInteger cellHeight; // 编译报错:静态全局变量只能在本文件中使用,不允许其他文件的调用 12 13 static NSInteger cellHeight = 500; // 可以在两个不同的 .m 文件中定义同样的静态全局变量,而互不干涉、互不影响 14 15 16 int main(int argc, const char * argv[]) { 17 @autoreleasepool { 18 19 NSLog(@"全局变量 %ld",(long)cellWidth); // 输出 100 20 NSLog(@"全局静态变量 %ld",(long)cellHeight); // 输出 500 21 22 } 23 return 0; 24 }
这篇关于OC笔记 - 静态变量和全局变量的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升