const 定义常量。
const 在*前,锁定的是不能通过(*指针变量)的改变来操作指针所指向变量的改变(如果指针指向的变量通过其他途径改变了(比如赋值),那么(*指针变量)的值也会跟着改变);const在*后,锁定的是指针变量不能修改。如果指针要指向的变量为常量,则const必须在*之前,保持不可更改性。指针的目的是通过间接的方式,修改变量。const * 则把这种间接修改的方式给阻断了,只保留了间接读取的功能。
const可以节省空间,避免不必要的内存分配。
define
宏的副作用:在使用的时候,尽量避免做计算操作;宏是将代码复制到对应的位置,为了保证代码的稳定,要尽可能地使用括号。
好处:也有其不可替代性。在实际开发过程中,是有可能临时拼接生成变量名的。不需要在战区为函数单独压栈,用空间换取栈区的消耗。
eg:
#define CONTACT(x, y) x##y // 拼接字符串(例如在抽取单例的宏时,定义 shared##className)
那么:CONTACT(user, Name) => userName
#define TO_STR(x) #x // 转换字符串
那么:TO_STR(llllllldlaslfj) => llllllldlaslfj