玩iOS的小伙伴对const应该很不陌生, 在声明全局常量的时候很多时候都会用到,

但是有时候修饰对象很迷惑下面是个人总结, 下面的地址都是模拟的

1.

const NSString *str1 = @"123";
str1 = @"ads";
/*
-- 对象地址 -- 对象 -- 指向的地址 ---- 值 ------ 值地址 ---
| 0x123456 str1 0x654321 || 123 ---- 0x654321 | // const 修饰的是 *str, 而*str 是值, 所以const 修饰的就是值123
| str1 0x654221 || ads ---- 0x654221 | // 因为const 修饰的是值 所以 指针str 还是可变的(可以指向其他值)
*/

2.

NSString const *str2 = @"456";
str2 = @"zxc";
/*
-- 对象地址 -- 对象 -- 指向的地址 ---- 值 ------ 值地址 ---
| 0x123464 str2 0x654311 || 456 ---- 0x654311 | // 与上面同理
| str2 0x654211 || zxc ---- 0x654211 |
*/

3.

NSString* const str3 = @"789";
str3 = @"qwe"; // 报错
/*
-- 对象地址 -- 对象 -- 指向的地址 ---- 值 ------ 值地址 ---
| 0x123478 str3 0x654301 || 789 ---- 0x654301 | // const 修饰的是 str3, 而str3 是指针(指向的是值的地址),
| || | 所以const 修饰的就是值789 的地址值
| 0x123478 str3 0x654301 || qwe ---- 0x654201 | // 因为const 修饰的是指针(指向的是值的地址)
| || | 所以 指针str3 是不可变的(不可以指向其他地址)
*/

iOS 里const在修饰对象时候的用法的更多相关文章

  1. 第24课.经典问题解析(1.析构函数的顺序;2.const修饰对象;3.成员函数,成员变量是否属于具体对象)

    1.当程序中存在多个对象的时候,如何确定这些对象的析构顺序? 单个对象 单个对象创建时构造函数的调用顺序 a.调用父类的构造函数 b.调用成员变量的构造函数(调用顺序与声明顺序相同) c.调用类自身的 ...

  2. Java编程里的类和对象

    像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了 ...

  3. iOS 中 const static extern 关键字总结

    在看一些高手所写的代码时,总是可以看到我们小白平常不用的关键字,一次,两次,三次,不能总是不明不白,现在总结一下日常开发中常用的关键字的作用: 关键字const/static/extern的释义和用法 ...

  4. const 修饰成员函数 前后用法(effective c++ 03)

    目录 const在函数后面 const修饰成员函数的两个作用 const在函数前面 总结 const在函数后面 类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态 ...

  5. 《挑战30天C++入门极限》入门教程:C++中的const限定修饰符

        入门教程:C++中的const限定修饰符 const修饰符可以把对象转变成常数对象,什么意思呢? 意思就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用! ...

  6. C++ const修饰不同类型的用法

    const取自constant的缩写,本意是不变的,不易改变的意思 一.修饰普通变量 const int a = 7; int b = a;         //正确 a = 8;           ...

  7. winfrom获取用户控件里的控件对象

    如何获取用户控件里的控件对象呢,其实思路也是很简单的, 比如有一个panel 用户控件 里面有许多的其他控件. 那么要找出一个Label控件怎么找呢,好的.现在我们就开始 首先,一个foreach循环 ...

  8. 成员函数的const到底修饰的是谁

    demo <pre name="code" class="cpp">class Test { public: const void OpVar(in ...

  9. 成员函数的const究竟修饰的是谁

    demo <pre name="code" class="cpp">class Test { public: const void OpVar(in ...

随机推荐

  1. 【BZOJ1455】罗马游戏(左偏树)

    [BZOJ1455]罗马游戏(左偏树) 题面 BZOJ 然而权限题. 题解 左偏树模板题. #include<iostream> #include<cstdio> #inclu ...

  2. ZABBIX 3.4 监控Nginx 状态(七)

    一.环境准备 1.在nginx的配置文件中,添加status配置        location /nginx_status {               stub_status on;       ...

  3. debian安装filebeat5.5收集nginx日志

    先贴一下我的BELK架构 1.Download and install the Public Signing Key: # wget -qO - https://artifacts.elastic.c ...

  4. 2019PKU\THU WC题解

    PKU: 机试: d1t1: 考虑拓扑序的合法性,每个点的入边必须先加入.f[S]表示先出来的是S集合的点,对应边的方案数.加入x的时候,把入边方向确定,出边自然后面会确定的 2^n*n d1t2: ...

  5. [转载]hzwer的bzoj题单

    counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...

  6. 队列,event,multiprocess

    队列:queue queue is especially useful in threaded programming when information must be exchanged safel ...

  7. koa中间件机制

    Koa是Express原班人马打造的一个更小,基于nodejs平台的下一代web开发框架. koa2利用的是async/await,洋葱圈模型. 1. koa2中间件基本用法

  8. linux ln链接详解

    1.序 Linux具有为一个文件起多个名字的功能,称为链接.被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份.另外,被链接的文件也可以有相同的文件名,但是 ...

  9. 打包python脚本为exe的坎坷经历, by pyinstaller方法

    打包python脚本为exe的坎坷经历, by pyinstaller方法 又应验了那句歌词. 不经历风雨, 怎么见得了彩虹. 安装过程略去不提, 仅提示: pip install pyinstall ...

  10. java学习第01天(搭建环境配置)

    搭建环境配置分为3个步骤 1.下载并安装 jdk使用1.8.0_151版本,下载地址(包含32位和64位):链接:https://pan.baidu.com/s/1qZau8oO 密码:0t5o 2. ...