关于const 修饰的一些知识
2019独角兽企业重金招聘Python工程师标准>>>
#1、前言
- const 修饰的是后面的东西
- 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.分析
- ** a:
const
在*
与a
之间**
- 这时候,
const
修饰的是a
,也就是a指针变量的地址,这时候a
存的是字符串常量区的@“a”
的地址。
- 所以按常理来说可以改变
*a
,但是不能改变a的值。 - 但是这里
*a
也是改变不了的,下面扩展会讲到 - ** 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
- A
*
前有const
,*
与A
之间也有const
综上
a、b、c、d
的分析,A 就很容易被理解了。
3、扩展.字符串的特殊性
为什么*a的值不能改变?
- 字符串是存在字符串常量池里面,然后要是有个指针想要指向一个字符串,先会到字符串常量区进行查找
- 如果没有,就在字符串的常量区创建一个,把指针指向字符串常量区
- 如果有,就直接把指针指向字符串的常量区。
- 所以,相同内容的字符串指针,其指向的内存地址都是一样的, 但是这个些字符串的指针变量的内存地址则可以是不同的。
关于字符串的存储请看这里
转载于:https://my.oschina.net/LiPengYue/blog/1539661
关于const 修饰的一些知识相关推荐
- 第七天2017/04/14(引用与const、C++基本知识)
一.引用与const 1.const引用的初始化的两种形式: //const引用,让被const修饰的变量具有只读属性 #include <iostream> using namespac ...
- 【c++】1.const和constexpr相关知识
const和constexpr相关知识 记忆法: const是常量,*是指针,const * 按顺序念就是[常量指针], * const 按顺序念就是[指针常量]. const int * p; // ...
- const 修饰指针
目录 const修饰指针 1.1const 放在*的左边 1.2const放在*的右边 const修饰指针 1.1const 放在*的左边 修饰的是指针指向的内容(*p),指针指向的内容,不能通过指针 ...
- 静态成员函数不能采用const修饰的原因
静态成员函数不能用const修饰 ,也不能存取nonstatic数据 C++中静态成员函数不能用const修饰的原因: static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成 ...
- C语言--const修饰指针解析
这种例子在我们平时编程时可能会很少用,但是在面试时被问的可能性就很大了. 用const修饰指针,常见的情况可以分为四种: 1.const int *p; // p 可变,p 指向的对象不可 ...
- private修饰的变量如何调用_梳理c++ const 修饰函数
const是衡量一个程序员是否老道的一个标准,除了修饰变量之外,还可以修饰函数,主要有以下几种形式 const int& fun(int& a); //修饰返回值 int& f ...
- C++成员函数中的const修饰符
在一些C++源码中经常见到const修饰的函数,这里的const与放的位置无关,也就是下面三种写法是等效的,只不过通常使用第一种写法,可以编写函数进行测试,这里的const虽然写在了函数的位置,其实是 ...
- C++ const修饰符和指针
C++ const修饰符和指针 开发工具与关键技术:C++.VisualStudio 作者:何任贤 撰写时间:2019年04月10日 const修饰符,是用来修饰变量,被const修饰符,修饰过的变量 ...
- C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】
C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...
最新文章
- 使用Node.js写一个简单的api接口
- Python从入门到精通 - 入门篇 (下)
- php linux权限,Linux权限位
- Android Studio Emulator 提示 “/dev/kvm is not found” 解决办法
- Jest DoneCallback 数据类型的理解
- 一个简单WCF项目的建立 by wsz
- 基于前端javascript的搜索功能
- redis 缓存数据格式
- 计算机图标ps教程视频,PS制作腾讯视频标志 -电脑资料
- CentOS6.7安装Python3.4
- 《C关键字分析》之typedef与callback
- mysql从一个表查询插入另一个表存在时更新_漫谈MySQL的锁机制
- 初中节点法分析电路_初三物理电路图解题思路:电路简化原理
- 堪萨斯大学计算机硕士,堪萨斯大学计算机工程硕士专业入学要求及费用
- 论文模型构建的步骤_最全面的财会核心期刊论文写作技巧,核心期刊审稿人带你详解财会论文写作路数...
- Android设备实现语音视频通话
- Python全栈开发【基础-09】深浅拷贝+while循环
- 特别关注:“网络同居”热背后的心理学分析
- 不用注册表删除搜狗输入法残留文件夹
- 玩转外贸LinkedIn必备的三大特质,以及突破六度人脉技巧
热门文章
- python快速入门第三版-Python 快速入门:第3版 配套资源 PDF 完整版
- python学习软件-python软件学习从入门到精通
- signature=4623c3d3408491ef6534d11dfcfda77e,作业批语架起师生情感交流的桥梁
- LeetCode Add Strings(大整数加法)
- s3-1 数据链路层概述
- NSMutableString和NSString区别,及相互转换方法
- [POJ](3268)Silver Cow Party ---最短路径(图)
- Java学习笔记之:Java JDBC
- 游戏运行时报0xc000007b错的解决办法
- 企业级GIS的演变(转)