const关键字

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内存分配的不同

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • C语言中#define 宏定义的命令 只是在预处理阶段对用#define 所定义的内容进行替换,不会检查数据类型 ...
    天净沙阅读 5,802评论 0 8
  • 如果不想让某些变量的值改变,可以使用const关键字来修饰这些变量,如果添加const关键字,这些变量的值从头到尾...
    赵亦晨阅读 3,916评论 0 1
  • C++有两种第一常量方式:#define const; 两种方式区别:1.宏定义是字符替换,没有类型检查。cons...
    阳光男孩joe阅读 2,425评论 0 0
  • 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。 补充:堆和栈的概念 ...
    iOS_小胜阅读 7,332评论 0 4
  • 据说, 那是个承载了梦想的城市; 据说 那里可以找到志同道合的朋友; 也听说 那里的地铁充斥着各种难闻的味道; 也...
    就这样一个星期天阅读 1,594评论 0 0

友情链接更多精彩内容