1.什么是const?

Const是C/C的关键字(修改符)。const通常用于定义常量。称为常数,因此以后不能修改值。

const定义常数

2.#define是什么?

Define,宏定义是一个预编译命令,编译器在编译阶段简单地替换所有使用宏的地方。下图所示的3360

取代巨集定义

3.他们有什么用?

Const和define都可以定义常数。修改值可以修改一次。您可以在使用该常数的任何地方同时更改值。一句代码也不需要更改。

使代码易于维护

提高代码的效率

4.他们有什么区别?

相同点

不同的点

从Const定义常量装配的角度来看,const定义常量在程序执行过程中只有一个副本,而#define定义常量在内存中有多个副本,因为如#define一样,只会立即给出相应的内存地址而不是数字

const和define之间的差异

编译器通常不将存储空间分配给常规const常量,而是存储在符号表中,在编译过程中成为常量,没有内存存储和读取操作,因此比宏定义更有效

如果const能做宏定义能做的事,宏中还需要存在什么?

存在是合理的。宏定义尚未被淘汰,它必须有其存在的道理。

宏可以做const做不到的事。

宏定义函数

在OC的单实例模式下使用宏

宏还可以根据传入的参数生成字符串,如下所示

宏定义高级功能

KStringCat(x,y) //根据传入的x和y连接字符串

KToString(x) //从传入的x生成字符串

5.我该怎么写?

Const有一个原则:他的右边是什么,什么是不变的。

const不变原则

使用Const修改函数的格式参数可以提高代码的安全性,并降低程序员之间的通信成本。

函数内部只能使用x和y,不能更改

宏主要用于条件编译。如果需要根据情况运行不同的代码块,可以使用宏的条件编译来判断。

摘要

在Objective-C中,任何地方都可以看到const常量,因此必须大胆使用const。这将带来巨大的好处。同时,定义数据后,除非绝对不需要或无法修改,否则请使用const!

相关推荐