关于const *
和* const
的理解,可以参考[C C++ OC指针常量和常量指针区别]这篇文章。
该篇文章中提到一个诀窍:** (指针) const(常量) 谁在前先读谁,谁在前谁不允许改变。*
我个人的记忆方法是:const修饰谁,谁就不可变。
int a = 10;
int b = 20;
int * const constValue = &a;
const int * constPValue = &b;
NSLog(@"constValue = %d, constPValue = %d", *constValue, *constPValue);
//constValue = &b; //报错,constValue是不可变的
*constValue = 15;
//*constPValue = 25; //报错,*constPValue是不可变的
constPValue = &a;
NSLog(@"constValue = %d, constPValue = %d", *constValue, *constPValue);
打印结果为:
constValue = 10, constPValue = 20
constValue = 15, constPValue = 15
- 代码
int * const constValue
中const
修饰constValue
,所以constValue
是不可变的,在初始化后对它赋值就会报错。
const在此处的影响: constValue不能再指向其他内存,但是constValue当前指向的内存中的值可以改变
- 代码
const int * constPValue
中const
修饰的是*constPValue
,所以*constPValue
是不可变的。
const在此处的影响:constPValue当前指向的内存中的值不可以被改变(特指通过constPValue改变),但是可以指向其他内存。
const int a;
网友评论