const:常量,当有字符串常量的时候,推荐使用
const与宏的区别:
1 .编译时刻:宏:预编译 const:编译时刻
2.编译检查:宏:不会检查错误 const:会检查错误
NSString* const Key = @"KEN";
#define KENUserDeafults [NSUserDefaults standardUserDefaults]
3.宏的好处:定义代码
4.宏的坏处:编译时间过长,因此常用的字符串通常使用const修饰
const作用:
- 仅仅是用来修饰右边的变量(只能修饰变量:基本变量,指针变量,对象变量)
修饰基本变量
int const a = 5; //a:只读变量
const int a = 5; //a:只读变量
int a = 10;
int * const p = &a;//p:只读变量 *p:变量
const int *p = &a;//*p:只读变量 p:变量
int const *p = &a;//*p:只读变量 p:变量
int const * const p = &a;//*p:只读变量 p:只读变量
const int * const p = &a;//*p:只读变量 p:只读变量
2.const修饰的变量,表示只读
const使用场景:
1.定义一个全局的只读的变量
2.在方法中定义只读参数
static作用
1.修饰局部变量
延长局部变量的是生命周期,只要成员运行,局部变量会一直存在
局部变量只会分配一次内存(static:修饰的变量,程序一运行就会分配一次内存)
for (int i=0; i<5; i++) {
// static int a = 0;
int a = 0;
a++;
NSLog(@"A = %d", a);
}
2.修饰全局变量
只会修改全局变量的作用域,表示只能是当前文件内使用
extern作用
1.声明一个变量,不能定义变量(extern修饰的变量不能初始化)
使用场景:一般用于声明全局变量
static、const联合使用
static:修饰全局变量,修改作用域,表示在当前文件夹中使用
const:修饰变量为只读
static NSString* const showString = @"静态全局只读变量";
静态全局只读变量
const、extern联合使用
const:修饰变量为只读
extern:声明全局变量
#import <Foundation/Foundation.h>
//UIKIT_EXTERN = extern
//extern NSString* c_account_edit_password;
//extern NSString* c_accout_logout;
//extern NSString* c_accout_logout_alert;
//extern NSString* c_accout_logout_alert_logout;
UIKIT_EXTERN NSString* c_account_edit_password;
UIKIT_EXTERN NSString* c_accout_logout;
UIKIT_EXTERN NSString* c_accout_logout_alert;
UIKIT_EXTERN NSString* c_accout_logout_alert_logout;
#import <Foundation/Foundation.h>
NSString* const c_account_edit_password = @"修改登录密码";
NSString* const c_accout_logout = @"退出登录";
NSString* const c_accout_logout_alert = @"您是否要退出登录?";
NSString* const c_accout_logout_alert_logout = @"退出";
网友评论