美文网首页
iOS const修饰常量的误区

iOS const修饰常量的误区

作者: 八点钟IOS暮雨 | 来源:发表于2018-05-30 19:45 被阅读0次

在iOS里,一般的常量建议大家能用const常量的,不要用宏定义。个中理由因为宏定义只是代码替换,而const常量会进行数据类型的判断,减少代码出错的可能性;而且宏定义的用法需要小心谨慎,否则容易出现问题,比如:

define a 2+10

int b = a/2
这个时候b的值不是我们想要的6,而是7。

const用来修饰基础常量指针或者对象指针的时候,大家往往搞混,不知道const放在"*"号前和后面的区别,那么我们来看两个例子:

例子一

]

例子一结果 例子二 例子二结果

上面两个例子就是const在""号前和""号后的用法,可以看到,当const在"*"号前,也就是例子一里,可以修改指针的指向地址,但不能这样子写:

*b=c;

而当const在"*"号后,也就是例子二里,可以修改指针指向地址的内容,但不能修改指向地址,即不能这样子写:

b=&c;

所以,我们可以得出一个结论,const离什么近,就代表它修饰的是什么!例子一中,const离""近,那么const 修饰的是"b",不能直接对*b进行修改;例子二中,const离b近,那么const修饰的是b,不能直接对b的值进行修改。

那么这个时候,我们来看一个iOS中容易出错的const用法

NSMutableString *const a = [@"八点钟" mutableCopy];
[a appendString:@"不错"];
NSMutableString const *b = [@"八点钟" mutableCopy];
[b appendString:@"不错"];

这两种用法都是可以的,不会报错!但是显然没有达到我们作为常量的目的。
为什么呢?因为我们定义的是一个mutable的String.

所以在iOS中定义一个字符串常量,正确的做法是这样的:
NSString *const a = @"八点钟";

相关文章

  • iOS const修饰常量的误区

    在iOS里,一般的常量建议大家能用const常量的,不要用宏定义。个中理由因为宏定义只是代码替换,而const常量...

  • iOS const修饰常量的误区

    在iOS里,一般的常量建议大家能用const常量的,不要用宏定义。个中理由因为宏定义只是代码替换,而const常量...

  • 5.const与指针

    1.const修饰指针-常量指针 2.const修饰常量-指针常量 3.const修饰指针和常量 代码如下

  • 浅谈 Const、Exetrn和Static

    Const const修饰常量 被const修饰的属性不能改变: static和exetrn static 在全局...

  • c++ const

    const 可修饰指针常量,可修饰常量指针,可以既修饰指针,也修饰常量常量指针:int a=10;int b=20...

  • iOS OC杂文

    1.const const修饰的是其右侧的内容const修饰的是只读的,const *修饰的是指针,所以指针是常量...

  • const & static & volatile

    1.const,static,volatile修饰变量代表什么意思? const:修饰的变量为常量,常量是不允许修...

  • iOS开发常用关键字const,static,extern

    const const翻译成中文是常量,常量是不可变的。const作用: const用来修饰基本变量或指针变量。 ...

  • const的作用

    1、 修饰变量const int a = 3; //常量a的值不能再修改int const b = 3; //常量...

  • iOS - const与static与extern

    1. const const意为"常量"。 程序中,"常量"的值是不变的,固定的 const用来修饰右边的基本变量...

网友评论

      本文标题:iOS const修饰常量的误区

      本文链接:https://www.haomeiwen.com/subject/hhuajftx.html