2019独角兽企业重金招聘Python工程师标准>>>

#1、前言

  1. const 修饰的是后面的东西
  1. const修饰的东西不可变

#2、验证 1. 代码

static NSString *const a = @"a";//const 在“*” 与 “a” 之间
static NSString const* b = @"a";//const 在“*” 与 “NSString”之间
static const NSString *c = @"a";//const 在“NSString”前面
const NSString static *d = @"a";//const 在最前面static NSString const * const A = @"a";//*前有const,* 与 A 之间也有const@implementation ViewController
- (void)viewDidLoad {[super viewDidLoad];[self setUP];
}- (void)setUP {NSString *aa = @"a";a = aa;//报错b = aa;c = aa;d = aa;A = aa;//报错//下面全部报错*a = aa;*b = aa;*c = aa;*D = aa;*A = aa;
}

2.分析

  1. ** a:const*a 之间**
  1. 这时候,const修饰的是a,也就是a指针变量的地址,这时候a存的是字符串常量区的@“a”的地址。
  1. 所以按常理来说可以改变*a,但是不能改变a的值。
  2. 但是这里*a也是改变不了的,下面扩展会讲到
  3. ** b、c 、 d : 都在*之前**

b = @"a";//const 在“*” 与 “NSString”之间 c = @"a";//const 在“NSString”前面 d = @"a";//const 在最前面 b 、c、 d的const 分别修饰的是*b、*c、*d b对应的语义为b指针指向的内存空间的值。所以,可以改变b,但是不能改变b

  1. A*前有const,*A之间也有const

综上a、b、c、d的分析,A 就很容易被理解了。

3、扩展.字符串的特殊性

为什么*a的值不能改变?

  1. 字符串是存在字符串常量池里面,然后要是有个指针想要指向一个字符串,先会到字符串常量区进行查找
  2. 如果没有,就在字符串的常量区创建一个,把指针指向字符串常量区
  3. 如果有,就直接把指针指向字符串的常量区。
  4. 所以,相同内容的字符串指针,其指向的内存地址都是一样的, 但是这个些字符串的指针变量的内存地址则可以是不同的。

关于字符串的存储请看这里

转载于:https://my.oschina.net/LiPengYue/blog/1539661

关于const 修饰的一些知识相关推荐

  1. 第七天2017/04/14(引用与const、C++基本知识)

    一.引用与const 1.const引用的初始化的两种形式: //const引用,让被const修饰的变量具有只读属性 #include <iostream> using namespac ...

  2. 【c++】1.const和constexpr相关知识

    const和constexpr相关知识 记忆法: const是常量,*是指针,const * 按顺序念就是[常量指针], * const 按顺序念就是[指针常量]. const int * p; // ...

  3. const 修饰指针

    目录 const修饰指针 1.1const 放在*的左边 1.2const放在*的右边 const修饰指针 1.1const 放在*的左边 修饰的是指针指向的内容(*p),指针指向的内容,不能通过指针 ...

  4. 静态成员函数不能采用const修饰的原因

    静态成员函数不能用const修饰 ,也不能存取nonstatic数据 C++中静态成员函数不能用const修饰的原因: static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成 ...

  5. C语言--const修饰指针解析

          这种例子在我们平时编程时可能会很少用,但是在面试时被问的可能性就很大了. 用const修饰指针,常见的情况可以分为四种: 1.const int *p; // p 可变,p 指向的对象不可 ...

  6. private修饰的变量如何调用_梳理c++ const 修饰函数

    const是衡量一个程序员是否老道的一个标准,除了修饰变量之外,还可以修饰函数,主要有以下几种形式 const int& fun(int& a); //修饰返回值 int& f ...

  7. C++成员函数中的const修饰符

    在一些C++源码中经常见到const修饰的函数,这里的const与放的位置无关,也就是下面三种写法是等效的,只不过通常使用第一种写法,可以编写函数进行测试,这里的const虽然写在了函数的位置,其实是 ...

  8. C++ const修饰符和指针

    C++ const修饰符和指针 开发工具与关键技术:C++.VisualStudio 作者:何任贤 撰写时间:2019年04月10日 const修饰符,是用来修饰变量,被const修饰符,修饰过的变量 ...

  9. C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...

最新文章

  1. 使用Node.js写一个简单的api接口
  2. Python从入门到精通 - 入门篇 (下)
  3. php linux权限,Linux权限位
  4. Android Studio Emulator 提示 “/dev/kvm is not found” 解决办法
  5. Jest DoneCallback 数据类型的理解
  6. 一个简单WCF项目的建立 by wsz
  7. 基于前端javascript的搜索功能
  8. redis 缓存数据格式
  9. 计算机图标ps教程视频,PS制作腾讯视频标志 -电脑资料
  10. CentOS6.7安装Python3.4
  11. 《C关键字分析》之typedef与callback
  12. mysql从一个表查询插入另一个表存在时更新_漫谈MySQL的锁机制
  13. 初中节点法分析电路_初三物理电路图解题思路:电路简化原理
  14. 堪萨斯大学计算机硕士,堪萨斯大学计算机工程硕士专业入学要求及费用
  15. 论文模型构建的步骤_最全面的财会核心期刊论文写作技巧,核心期刊审稿人带你详解财会论文写作路数...
  16. Android设备实现语音视频通话
  17. Python全栈开发【基础-09】深浅拷贝+while循环
  18. 特别关注:“网络同居”热背后的心理学分析
  19. 不用注册表删除搜狗输入法残留文件夹
  20. 玩转外贸LinkedIn必备的三大特质,以及突破六度人脉技巧

热门文章

  1. python快速入门第三版-Python 快速入门:第3版 配套资源 PDF 完整版
  2. python学习软件-python软件学习从入门到精通
  3. signature=4623c3d3408491ef6534d11dfcfda77e,作业批语架起师生情感交流的桥梁
  4. LeetCode Add Strings(大整数加法)
  5. s3-1 数据链路层概述
  6. NSMutableString和NSString区别,及相互转换方法
  7. [POJ](3268)Silver Cow Party ---最短路径(图)
  8. Java学习笔记之:Java JDBC
  9. 游戏运行时报0xc000007b错的解决办法
  10. 企业级GIS的演变(转)