全局/局部变量、宏、const、static、extern
#pragma mark--全局变量和局部变量
根据变量的作用域,变量可以分为:
一.全局变量
1> 定义:在函数外面定义的变量
2> 作用域:从定义变量的那一行开始,一直到文件结尾(能被后面的所有函数共享)
3> 生命周期:程序一启动就会分配存储空间,程序退出时才会被销毁
4> 默认的初始值就是0
5> 首字母大写 static int StudentName 采用帕斯卡命名法
二.局部变量:
1> 定义:在函数(代码块)内部定义的变量(包括函数的形参)
2> 作用域:从定义变量的那一行开始,一直到代码块结束
3> 生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就会被回收
4> 没有固定的初始值
5> 首字母小写 int studentNameNumber 采用驼峰命名法
#pragma mark--const与宏区别
1.编译时刻: 宏:预编译 const:编译时刻
2.编译检查: 宏:不会检查错误 const:会检查错误
3.宏的好处:可以定义代码
4.宏的坏处:编译时间过长,因此常用的字符串通常使用const修饰
5.当有字符串常量的时候,苹果推荐我们使用const
#pragma mark - const
const作用:
1."仅仅"是用来修饰"右边的变量"(只能修饰变量:基本变量,指针变量,对象变量)
2.const修饰的变量,表示只读
结论:
const 修饰的是"变量"不是"常量"!!!
经过const修饰的"变量"具备了常量的一些特性
const书写规范:一定要放在变量的左边
const开发中使用场景
// 1.定义一个全局只读变量
// 2.在方法中定义只读参数
1.const修饰基本变量
int const a = 10; // a:只读变量 const 后面为a 所以a就是只读的不能修改的"变量"
const int a = 10; // a:只读变量
2.const修饰指针变量
int * const p = &a; // p:只读 *p:变量
const int *p = &a; // *p:只读 p:变量
int const *p = &a; // *p:只读 p:变量
int const * const p = &a; // *p:只读 p:只读
const int * const p = &a; // *p:只读 p:只读
举例: const int * const p = &a;
第一个const 后面是*p 所以*p是只读的不能修改的变量
第二个const后面是p 所以p也是只读不能修改的变量
#pragma mark --static
static : 修饰变量
1> 修饰全局变量
* 只会修改全局变量的作用域,表示只能是当前文件内使用
2> 修饰局部变量 :
* 局部变量的生命周期 跟 全局变量 类似 生命周期变长了
* 但是不能改变作用域 作用域为某一个{}中
* 能保证局部变量永远只初始化1次,在程序运行过程中,永远只有1份内存
#pragma mark --extern
1> 声明一个变量,不能定义变量
注意:extern修饰的变量不能初始化
#pragma mark --static和const组合使用
// static:当前字符串只能在本文件中使用 const:并且只读,不能改
static NSString * const name = @"123";
#pragma mark --extern和const组合使用
实际开发中会遇到下面的情况
XXX.h文件中 声明
extern NSString * const ESALoginSuccessNotification;
1.extern 引用别人的变量,实际的作用是将ESALoginSuccessNotification这个变量公开
2.const 这是一个只读的变量,别人导入XXX.h后只能使用不能修改值
XXX.m文件中 定义全局变量
NSString * const ESALoginSuccessNotification = @"ESALoginSuccessNotification";
1.const 这是一个只读变量,具体代表的字符串是 = 后面的字符串
2.放在.m中的作用是:如果放在.h中,别人#import "XXX.h"后会重复定义 放在.m中会创建一次,别人可以从.h公开的声明中使用
更多内容--> 博客导航 每周一篇哟!!!
有任何关于iOS开发的问题!欢迎下方留言!!!或者邮件lieryangios@126.com 虽然我不一定能够解答出来,但是我会请教iOS开发高手!!!解答您的问题!!!
全局/局部变量、宏、const、static、extern的更多相关文章
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- 李洪强iOS经典面试题155 - const,static,extern详解(面试必备)
李洪强iOS经典面试题155 - const,static,extern详解(面试必备) 一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽 ...
- const,static,extern简介
一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 编译时刻:宏是预编译(编译之前处理),const是编译阶段. 编 ...
- iOS 中 const static extern 关键字总结
在看一些高手所写的代码时,总是可以看到我们小白平常不用的关键字,一次,两次,三次,不能总是不明不白,现在总结一下日常开发中常用的关键字的作用: 关键字const/static/extern的释义和用法 ...
- const,static,extern简介(重要)
一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 编译时刻:宏是预编译(编译之前处理),const是编译 ...
- const ;static;extern的使用与作用
const /** const :常量 const ...
- iOS正确使用const,static,extern
static 修饰局部变量 让局部变量只初始化一次 局部变量在程序中只有一份内存 并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁) 修饰全局变量 全局变 ...
- const&static&extern
const 结论: 如果const写在指针变量名的旁边, 那么指针的指向不能变, 而指向的内存空间的值可以变 如果const写在数据类型的左边或者右边, 那么指针的指向可以改变, 但是指向的内存空间的 ...
- const,static,extern,#define
一.const // 简单定义变量,可以修改变量的值 ; a = ; // const的用法 // 用法一: ; ; // 不允许修改,因为 const 修饰 b/c,指定 b/c 为常量!! // ...
- const static extern
http://wenku.baidu.com/link?url=saMJ3WpR_Lili2oflaIK-xK7wkQhtP2I-FdEX6I_XjmNxl7m0Z8SYHJtfqyXYkSmok8h ...
随机推荐
- 洛谷 - P2602 - 数字计数 - 数位dp
https://www.luogu.org/problemnew/show/P2602 第二道数位dp,因为“数位dp都是模板题”(误),所以是从第一道的基础上面改的. 核心思想就是分类讨论,分不同情 ...
- Codeforces Round #422 (Div. 2)D. My pretty girl Noora(递推+数论)
传送门 题意 对于n个女孩,每次分成x人/组,每组比较次数为\(\frac{x(x+1)}{2}\),直到剩余1人 计算\[\sum_{i=l}^{r}t^{i-l}f(i)\],其中f(i)代表i个 ...
- PTA 计算平均值
现在为若干组整数分别计算平均值. 已知这些整数的绝对值都小于100,每组整数的数量不少于1个,不大于20个. 输入格式:首先输入K(不小于2,不大于20).接下来每一行输入一组数据(至少有一组数据), ...
- 基于FBX SDK的FBX模型解析与加载 -(四)
8. 骨骼蒙皮动画 骨骼蒙皮动画是当前游戏引擎中最常用的一种动画方式,关于其基本原理网络上的资料较多,关于到涉及的其它较复杂操作,如插值.融合等在这里也就先不再讨论了,而且其实现方式也与具体引擎的动作 ...
- C#批量插入Sybase数据库,Anywhere 8
数据库版本是Adaptive Server Anywhere 8 1.添加引用,程序集 iAnywhere.Data.AsaClient.这个和SQLServer的System.Data.SqlCli ...
- Jmeter之文件下载
Jmeter文件下载 1.打开jmeter新建线程组—>http请求 2.在百度上选择一个图片下载,选择图片右击复制图片地址 https://ss1.baidu.com/9vo3dSag_xI4 ...
- [LOJ6041雅礼集训2017]事情的相似度
题解 \(SAM+set\)启发式合并+扫描线 首先可以发现题目要求的就是查询结尾在一段区间内的\(LCS\) 这个显然就是\(SAM\)的\(parent\)树上的\(step[LCA]\) 我们可 ...
- spring事务问题
springmvc中在service层中有如下逻辑:1.提交事务2.开启新线程,新线程中的业务依赖1中提交的事务处理办法:在service中新建一个方法do,调本地提交事务的方法doTranction ...
- ibatis学习笔记
步骤: 搭建配置环境:导入相关jar包 配置文件: JDBC连接属性文件 总配置文件 关于每个实体的映射(map.xml)文件 JDBC连接属性文件 jdbc.properties ## mysql ...
- re正则表达式公式讲解5
1.refullmatch() 完全匹配字符串则返回object,否则返回None import re s = "max@123uyt146" print(re.fullmatch ...