全局变量、局部变量、const、static、extern
来源:互联网 发布:树莓派安装unity3d 编辑:程序博客网 时间:2024/05/16 05:09
全局变量:
类里方法外、类外直接写NSString * str = @“xxx”; str是全局变量(面向对象中,要使用全局变量,一般设置成类的属性)
局部变量:
写在类里方法内的变量是局部变量。
注意:
const、static、extern只是三个变量修饰符 const决定变量能不能被改变 static可以决定变量的生命周期 extern可以想不到什么用处的跨文件传值?…至于变量的作用域,跟它们没关系,只能变量定义的地方有关。
const常量(只读)
(当不希望别人修改这个变量值的时候用,写在pch中可以起到宏的作用)
位置可以随便写
const作用
1. 用于修饰右边变量(基本变量,指针变量)2. 被const修饰变量只读
const与宏的区别
1. 编译的时刻不一样: 宏:预编译 const:编译2. 编译检查:宏不会做编译检查 const会3. 宏的好处:宏可以定义函数和方法 const不可以4. 宏坏处:大量使用宏,会导致预编译时间过长
常量指针与指针常量的区分:
看指针*号 与 const 的先后顺序 const在*号前面,表示里面存的是常量值,const int * a = &b; 可以直接改b的值,但是不能通过*a改,编译器认为a里是个常量 *号在const前面,表示这个创建的指针变量不能再被赋值,int * const a = &b,a不能再赋值其他的地址
相关题目
int * const p1; // p1:只读 *p1:变量 (const int) / (int const) *p2; // p2:变量 *p2:只读 (const int) / (int const) * const p4; // p4:只读 *p4:只读
iOS中const的位置
const在iOS中修饰字符串,const的位置在哪都无所谓的,因为重新赋值都会报错
原因,比如: const NSString * str = @“ss”; / NSString * const str = @“ss”; 如果再赋值 str = @“string”,都会报错 因为 str = @“string” 本质上干了两件事: 1.将str的内存地址改成@“string”的地址 2. 将str内存中存的值改为string所以不管const位置在那,重新赋值都有问题。
生命周期
存在常量数据区,与应用程序生命周期相同
const在开发当中的使用
1. const替换宏,宏:常用字符串或者基本数据定义成宏 -> const2. 修饰方法参数,让方法参数只读
static(提升生命周期):
如果有时候希望类里某个变量拥有整个app运行期间一般长的声明周期时,控制器销毁,变量依旧存在的时候,用这个修饰)
作用域(不会改变变量作用域):
修饰局部变量,只要被static修饰局部变量,这个局部变量的声明周期就会延长(整个app运行过程中都在),作用域不变修饰全局变量,只要被static修饰全局变量,这个全局变量只能在当前文件下使用
分配时刻:
程序一运行的时候就会分配内存
生命周期:
程序运行期间一直存在static修饰的变量,只是在编译的时候进行初始化赋值,运行的时候就不会再运行这句代码。
注意点:
在c99中指明全局变量和static变量的初始化式必须为常量表达式 static NSArray * array = @[] / [NSArray array] 错误: initializer element is not a compile-time constant 只能: static NSArray * array; 其他地方赋值 static NSString * str = @“” 这个是可以的,NSString总是特殊
extern(跨文件使用)
extern修饰的变量,名字全局内不能相同,否则报错:变量重定义)
使用方式(跨文件使用):
A类有个属性:int a = 8; // 类外,类内:方法外。B类中想要使用:extern int a ; // 位置随便,类外,类内:方法内,方法外这个时候A中的值,B就能获取,而且还能修改。一旦修改之后,A文件中a的值也变了
作用域
全局作用域(只需要在一个源文件中定义,就可以作用于所有的源文件)
生命周期
程序运行期间一直存在
static和const联合使用
static const NSString * reuseId = @“reuseId”; // 在当前文件内可用的只读变量
开发中是如何避免重复定义?
做法:只要定义全局变量,都不能再自己的类中定义,一般开发中,我们会搞一个公共的const文件来定义全局变量
阅读全文
0 0
- 全局变量、局部变量、const、static、extern
- static & extern 全局变量 局部变量...
- 局部变量和全局变量,extern和static
- 静变量static、全局变量extern、局部变量、实例变量
- iOS 静变量static、全局变量extern、局部变量、实例变量
- 全局变量、局部变量、extern
- 【c基础】全局变量-局部变量 静态变量static-自动变量auto 外部变量extern-内部变量static 常量const-宏定义#difine
- c语言中的全局变量,局部变量,static,extern
- 全局变量 局部变量和关键字static和extern的使用
- 关于Static、全局变量、局部变量、Extern之间的种种
- 全局变量、局部变量与关键字static、extern的使用分析
- C语言 const static 静态变量 全局变量 局部变量
- 【C语言】局部变量、全局变量,局部静态变量,全局静态变量,extern,static的区别
- 全局变量/extern/static/const区别
- static变量,全局变量,局部变量
- 全局变量,静态变量,extern,static
- IOS总结 静变量static、全局变量extern、局部变量、实例变量
- IOS总结 静变量static、全局变量extern、局部变量、实例变量
- HDU 5493 线段树
- ubuntu16.04环境下安装Python SPAMS包
- Android开发第三方库glide和圆形控件circleimageview一起使用第一次进入无法显示问题
- JavaWeb开发中关于JS校验的代码优化问题
- cordova 一些配置的讲解
- 全局变量、局部变量、const、static、extern
- redis全部数据类型命令整合
- AngularJS 学习笔记(3)-指令(Directive)
- 127.0.0.1可以访问,localhost不能访问的问题
- Q01回文十进制数
- 新人学PHP,认为手动搭建环境而苦恼吗?这篇文章告诉你多简单!
- Mondrian+Tomcat+Pivot4J = ROLAP
- html+css基础
- Phpcms V9导航循环下拉菜单的调用技巧