>

const会编译检查

- 编辑:cabet269com-亚洲城官网 -

const会编译检查

iOS开采:正确运用const,static,extern

   前言

  本篇主要介绍在支付中怎么利用const,static,extern3个重大字,假设喜欢本身的稿子,能够关怀本身今日头条:吖了个峥,也能够来小码哥,通晓下我们的iOS培养练习科目。后续还或许会更新更加多内容。。。

  风流倜傥、const与宏的差距(面试题):

  const简要介绍:在此之前常用的字符串常量,平日是分红宏,可是苹果不引入大家分红宏,推荐大家利用const常量。

  编写翻译时刻:宏是预编写翻译(编写翻译此前管理),const是编译阶段。

  编写翻译检查:宏不做检讨,不会报编写翻译错误,只是改换,const会编写翻译检查,会报编写翻译错误。

  宏的好处:宏能定义一些函数,方法。 const不能够。

  宏的破绽:使用大批量宏,轻松招致编写翻译时间久,每趟都亟待重新沟通。

  注意:很多Blog都在说使用宏,会开销比较多内部存款和储蓄器,我那注明并不会变动超级多内部存款和储蓄器,宏定义的是常量,常量都位于常量区,只会生成意气风发份内部存款和储蓄器。

图片 1

  // 不关痛痒的常量:抽成宏

  #define XMGAccount @"account"

  #define XMGUserDefault [NSUserDefaults standardUserDefaults]

  // 字符串常量

  static NSString * const account = @"account";

  - (void)viewDidLoad {

  [super viewDidLoad];

  // 偏心设置存款和储蓄

  // 使用宏

  [XMGUserDefault setValue:@"123" forKey:XMGAccount];

  // 使用const常量

  [[NSUserDefaults standardUserDefaults] setValue:@"123" forKey:account];

  }

  二、const功效:约束类型

  1.const仅仅用来修饰右侧的变量(基本数据变量p,指针变量*p)

  2.被const修饰的变量是只读的。

  const基本接收

  - (void)viewDidLoad {

  [super viewDidLoad];

  // 定义变量

  int a = 1;

  // 允许校正值

  a = 20;

  // const二种用法

  // const:修饰基本变量p

  // 这两种写法是生机勃勃致的,const只修饰右侧的主旨变量b

  const int b = 20; // b:只读变量

  int const b = 20; // b:只读变量

  // 不容许改进值

  b = 1;

  // const:修饰指针变量*p,带*的变量,就是指针变量.

  // 定义叁个照准int类型的指针变量,指向a之处

  int *p = &a;

  int c = 10;

  p = &c;

  // 允许改正p指向的地址,

  // 允许修改p访谈内存空间的值

  *p = 20;

  // const修饰指针变量访谈的内部存款和储蓄器空间,修饰的是左臂*p1,

  // 三种办法相仿

  const int *p1; // *p1:常量 p1:变量

  int const *p1; // *p1:常量 p1:变量

  // const修饰指针变量p1

  int * const p1; // *p1:变量 p1:常量

  // 第一个const修饰*p1 第二个const修饰 p1

  // 两种办法相像

  const int * const p1; // *p1:常量 p1:常量

  int const * const p1; // *p1:常量 p1:常量

  }

  三、const开荒中使用意况:

  1.急需1:提供三个艺术,那么些主意的参数是地方,里面只好通过地点读取值,不能够透过地方改革值

  2.要求2:提供二个艺术,那个办法的参数是地方,里面不可能改改参数的地点。

  @implementation ViewController

  // const放*前方节制参数,表示*a只读

  // 只好改正地址a,无法通过a改正访谈的内部存款和储蓄器空间

  - (void)test:(const int * )a

  {

  // *a = 20;

  }

  // const放*末尾约束参数,表示a只读

  // 不可能改良a的地址,只可以纠正a访谈的值

  - (void)test1:(int * const)a

  {

  int b;

  // 会报错

  a = &b;

  *a = 2;

  }

  - (void)viewDidLoad {

  [super viewDidLoad];

  // Do any additional setup after loading the view, typically from a nib.

  int a = 10;

  // 必要1:提供三个主意,那个办法的参数是地方,里面只可以通过地点读取值,无法因此地方校勘值。

  // 这时就须要利用const,限定措施的参数只读.

  [self test:&a];

  // 供给2:提供三个格局,这么些点子的参数是地点,里面不可能改革参数的地方。

  [self test1:&a];

  }

  @end

  四、static和extern轻巧利用(要运用三个事物,先了然其功能)

  static作用:

  修饰局部变量:

  1.延长部分变量的生命周期,程序结束才会销毁。

  2.局地变量只会生成黄金年代份内部存款和储蓄器,只会最早化一次。

  3.转移部分变量的成效域。

  修饰全局变量

  1.只好在本文件中访问,纠正全局变量的功效域,生命周期不会改

  2.幸免再一次定义全局变量

  extern作用:

  只是用来获得全局变量(富含全局静态变量)的值,无法用于定义变量

  extern事业规律:

  先在时下文件查找有未有全局变量,未有找到,才会去此外文件查找。

  // 全局变量:独有风流罗曼蒂克份内存,全数文件分享,与extern联合使用。

  int a = 20;

  // static修饰全局变量

  static int age = 20;

  - (void)test

  {

  // static修饰局地变量

  static int age = 0;

  age ;

  NSLog(@"%d",age);

  }

  - (void)viewDidLoad {

  [super viewDidLoad];

  // Do any additional setup after loading the view, typically from a nib.

  [self test];

  [self test];

  extern int age;

  NSLog(@"%d",age);

  }

  I

  五、static与const联合利用

  static与const功能:声美赞臣个只读的静态变量

  开垦使用意况:在二个文件中平常选拔的字符串常量,可以使用static与const组合

  // 开垦中常用static修饰全局变量,只变动功能域

  // 为何要改善全局变量成效域,幸免再度证明全局变量。

  // 开荒中声称的全局变量,有个别不希望外面更换,只允许读取。

  // 举例一个为主数据类型不愿意旁人改变

  // 声美赞臣(Meadjohnson卡塔 尔(英语:State of Qatar)(Aptamil卡塔尔个静态的全局只读常量

  static const int a = 20;

  // staic和const联合的功效:声美素佳儿(Friso)个静态的大局只读常量

  // iOS中staic和const常用利用境况,是用来取代宏,把一个不常使用的字符串常量,定义成静态全局只读变量.

  // 开辟中临时获得key改良值,由此用const修饰key,表示key只读,不允许改善。

  static NSString * const key = @"name";

  // 如果 const修饰 *key1,表示*key1只读,key1还是能够改革。

  static NSString const *key1 = @"name";

  六、extern与const联合利用

  开辟中动用处境:在多少个文件中临时选取的同等个字符串常量,能够使用extern与const组合。

  原因:

  static与const组合:在每种文件都亟待定义后生可畏份静态全局变量。

  extern与const组合:只须求定义风姿浪漫份全局变量,八个文件共享。

  全局常量正规写法:开采中便于处理全体的全局变量,平常搞叁个GlobeConst文件,里面非常定义全局变量,统生机勃勃保管,要不然项目文件多倒霉找。

  GlobeConst.h

  /*******************************首页****************************/

  extern NSString * const nameKey = @"name";

  /*******************************首页****************************/

  GlobeConst.m

  #import

  /*******************************首页****************************/

  NSString * const nameKey = @"name";

  /*******************************首页****************************/

前言 本篇重要介绍在开辟中怎么选择const,static,extern3个根本字,假设喜欢作者的随笔,能够关心本身腾讯网:吖了...

本文由cabet269计算机在线发布,转载请注明来源:const会编译检查