一.const

1>对于const,记住关键的一点,它只是修饰右边的变量.

例如:

- (void)viewDidLoad {
[super viewDidLoad];
// const两种用法
// const:修饰基本变量p
// 这两种写法是一样的,const只修饰右边的基本变量b
const int b = ; // b:只读变量
int const b = ; // b:只读变量
// 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:常量
}

2>对于const的应用场景

//如果我需要一个方法,参数是地址,只能通过地址获取值,不能修改地址

//*a 只读  不能修改*a
- (void)test:(const int *)a{
a = ;
} //如果不能修改a的值,只能修改a访问的值
//a 只读 不能修改a
- (void)test1:(int * const)a{
*a = ;
}

3>const和宏的区别

  (1)宏是预编译执行,const是编译执行.

  (2)宏不会做编译检查,它只是做替换,因此不会编译报错;const会编译检查,会编译报错.

  (3)宏能定义方法或函数,const不能.

  (4)大量使用宏会造成编译时间长久.

  (5)注意:大量使用宏并不会消耗很多内存,宏定义的是常量,常量是存放在常量去,只生成一份内存,并不像有些人所说的会消耗很多内存!

二.static和extern

1>static作用:

   (1)修饰局部变量

      1)延长局部变量的声明周期,程序结束才销毁

      2)局部变量只初始化一次,节省内存

      3)改变作用域

     (2)修饰全局变量

      1)只能在本文件中访问,修改全局变量作用域,生命周期不改变

      2)避免重复定义全局变量

2>extern作用:

    (1)只是用来获取全局变量的值,不能用来定义变量

    (2)工作原理是先在本文件中查找有没有全局变量,没有找到的话再去其他文件中查找.

三.static和const一起使用

1>防止重复声明全局变量

2>不希望同事无意中修改变量,只允许读取

3>声明一个静态的全局只读常量

四.extern与const一起使用

1>在多个文件中经常使用同一个字符串常量,用extern和const组合使用

2>一般建一个GlobeConst

Objective-C中的const ,extern,static的更多相关文章

  1. const extern static 终极指南

    const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...

  2. 如何正确使用const、static、extern

    转自:http://www.jianshu.com/p/2fd58ed2cf55 前言 本篇文章主要介绍在开发中怎么使用const.static.extern关键字. 一.const 与宏的区别: c ...

  3. 如何在 C# 中使用 const,readonly,static

    平时在开发时经常会用到 const,readonly,static 关键字,可以肯定这些关键词是完全不同的概念,但有时候他们在用法上很相似以至于在场景中不知道选择哪一个,这篇文章我们就来讨论 C# 中 ...

  4. C语言中关键字auto、static、register、const、volatile、extern的作用

    原文:C语言中关键字auto.static.register.const.volatile.extern的作用 关键字auto.static.register.const.volatile.exter ...

  5. const、static和extern的正确使用方式

    我们在看一些大牛的第三方时,里面会出现很多const.static和extern,尤其是const和static,const和extern的结合使用,直接令很多小伙伴懵逼了,今天就详细讲解一下这三个关 ...

  6. 《OOC》笔记(1)——C语言const、static和extern的用法

    <OOC>笔记(1)——C语言const.static和extern的用法 C语言中const关键字用法不少,我只喜欢两种用法.一是用于修饰函数形参,二是用于修饰全局变量和局部变量. 用c ...

  7. const、static、extern三个关键字

    默认情况下,C语言的全局变量是全世界都可以访问的,也就是全局变量可以跨文件访问. extern可以引用全局变量 例如,如果有一个全局变量int money = 100;extern int money ...

  8. OC中修饰符:宏define 常量:const extern

    const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 // 初始化之后不能赋值,指向的对象可以是任意对象,对象可变. NSString * c ...

  9. (转)全局变量、extern/static/const区别与联系

    全局变量.extern/static/const区别与联系 编译单元(模块):     在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LIN ...

随机推荐

  1. mysql查询语句举例

    1. 基础数据表 学生成绩表(stuscore): 姓名:name 课程:subject 分数:score 学号:stuid 张三 数学 89 1 张三 语文 80 1 张三 英语 70 1 李四 数 ...

  2. 一篇不错的关于分析MVC的文章

    1 简介 英文原文:MVC vs. MVP vs. MVVM 三者的目的都是分离关注,使得UI更容易变换(从Winform变为Webform),使得UI更容易进行单元测试. 2 MVC/MVP 2.1 ...

  3. android 的异步任务

    /** * 异步任务的三个泛型参数: * 1.调用execute方法时传入的参数类型,输入参数 * 2.progressUpdate的方法入参 * 3.异步任务的返回结果类型 doInBackgrou ...

  4. 动作-CCActionInterval之CCActionEase家族

    补间动作也是一个包装器(之前叫补间动画,从字面上讲,叫动作更合适一些.).你也可以叫他缓释动作. 1.含义 补间动作改变的是,内部动作的执行速率(注意,并没有改变执行的最终效果,和执行的时间.)关于这 ...

  5. Adobe Flash Platform产品介绍

    解释 adobe flash platform flex是一个免费的开源的框架 该应用程序通常是用在 浏览器和 桌面 AIR中的 了解 flex框架 ,Flex sdk 和adobe flash bu ...

  6. c结构体初始化问题

    结构体中的数组的初始化问题 我的代码 C/C++ code #include <stdio.h> #include <stdlib.h> struct a { int leng ...

  7. hibernate简单应用

    Hibernate 第二章 核心API 和CURD实现 核心API介绍 单表操作方法 查询hql语句 1.认识hibernate 核心思想ORM:实现数据库中的文件一一映射为java中的实体类. 使用 ...

  8. .net中下载文件的方法(转)

    .net中下载文件的方法 一.//TransmitFile实现下载      protected void Button1_Click(object sender, EventArgs e)      ...

  9. Asp.net自制模板框架

    最近在做个包含了大量重复样式的控件的网站. 如果用MVC的话,我可以针对每个需要单独块编辑的Model写一个局部视图. 然后根据不同逻辑需求拼起来.用现成MVC框架非常容易做到. 但环境是3.5的最高 ...

  10. 【SQL】Update中使用表别名、如何用表中一列值替换另一列的所有值

    Update中使用表别名 select中的表别名: select * from TableA as ta update中的表别名: update ta from TableA as ta 如何用表中一 ...