OC中const关键字

1、const 的作用

  • 1、const的意思就是常量,其作用也是修饰过的数据不能再改变。
  • 2、被const修饰的变量就会变成只读的,也就是变成了常量。
//被 const 修饰后的变量都变成了只读的,也就是常量
int const number = 1234567788;  // const 修饰基本数据类型
//还可以这样写
// const int num = 123456788;
number = 23456667;  //此时报错,因为被 const 修饰的变量只读,不能设置
  • 3、const只修饰右边的内容。
//const 只修饰右边
int const *a1;   // a1 是变量,可变. *a1 是常量,不可变
NSString * const str1 = @"happy";  // str1 是常量,不可变. *str1 是变量, 可变
const NSString * const str2 = @"happy"; // str2 是常量. *str2 也是常量

2、const 三种情况,规律:修饰哪个,哪个不可变,其他都可变

1> 修饰指针

 NSString const *b = @"1";
 const NSString *c = @"1";
 c = @"3";   // const 修饰的是指针变量, 指针指向的对象是变量,可以修改
// *b = @"2";   //报错, *b是常量不能修改

2> 修饰变量

// 2. 修饰变量
NSString * const d = @"1";
//  d = @"1";  //报错: const 修饰是变量,所以指针指向的对象不能修改,指针可以修改

3> 既修饰指针又修饰变量

// 3. 既修饰指针又修饰变量
const NSString * const f = @"1";
f = @"2";  //指针和指针指向的对象都不能修改

4> 修饰对象

//修饰对象: 对象不可变
Person * const per = [[Person alloc]init];
//  per = [Person new];  //报错,因为修饰的是对象本身,不能修改对象的地址.
//但是可以修饰对象的属性,因为属性是没有被 const 修饰的
per.name = @"Jack";

5> 修饰方法中的参数

// const 修饰方法参数
- (void)testConst:(NSString * const)name {
  //  name = @"Lily";  //报错,因为参数被 const 修饰了,所以参数不能被修改(即使是形参)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值