1、常量:const关键字修饰普通变量,不管是前还是后都是一经初始化就不能再赋值改变。
const int price0;//没初始化,不可变
const int price1 = 10;//不可变,只读
int const price2 = 30;//不可变,只读
int price3 = 50;//普通变量,可变
const int price4 = price3;//初始化指向一个普通变量,不可变,只读
int const price5 = price4;//初始化指向一不可变常量,不可变,只读
NSLog(@"price0:%d price1:%d price2:%d price3:%d",price0,price1,price2,price3);
输出结果:
price0:1072693248 price1:10 price2:30 price3:50 price4:50 price5:50
2、常量指针:
int size0 = 50;
int size1 = 100;
const int * size2 = &size0;//const修饰*size2,可读可写
size2 = &size1;//重新赋值
int const * size3 = &size0;//const修饰*size3,可读可写
size3 = &size1;//重新赋值
int * const size4 = &size0;//const修饰size3,指针常量,只读
// size3 = &size1;//编译报错
const int const * size5 = &size0;//类似于int const * size5 = &size0,可读可写,会报警告:Duplicate ‘const’ declaration specifier
size5 = &size1;//重新赋值
const int * const size6 = &size0;//类似于指针常量,只读
// size6 = &size1;//编译报错
int const * const size7 = &size0;//类似于指针常量,只读
// size7 = &size1;//编译报错
NSLog(@"size0:%d size1:%d size2:%d size3:%d size4:%d size5:%d size6:%d size7:%d",size0,size1,*size2,*size3,*size4,*size5,*size6,*size7);
输出结果:
size0:50 size1:100 size2:100 size3:100 size4:50 size5:100 size6:50 size7:50
3、关于const和 #define宏定义区别
3.1 #define宏是在编译前处理的,const宏是在编译运行时处理,因此如果很多宏定义时建议使用const定义
3.2内存分配的不同