一、const
const修饰符可以修饰指针类型、基本数据类型、设置常量 ,编译检查,比宏更加安全
1.const修饰指针类型
(1)const在 * 的右边:
int *const p = &d;
p = 10;
*p = &b;//错误
指针指向的地址无法改变,但是可以通过指针改变指向地址里保存的值。
(2)const在 * 的左边
int const *p = &d;
p = 10;//错误
*p = &b;
指针指向的地址可以改变,但是无法通过指针改变指向地址里保存的值。
2.const修饰基本数据类型
(1)使用const可以把基本数据类型变为常量,无法进行修改
int const a = 1;
const int b = 2;
a = 2;//错误
b = 3;//错误
3.const设置常量
(1)静态常量
static NSString * const str = @"str";
str = @"strstr"//报错,值不可改变
static const NSString *str = @"str";
str = @"strstr";//值可以改变,地址不能改变
(2)全局常量
.h文件中 extern NSString * const string;
.m文件中 NSString * const string = @"string";
二、static
1.作用
(1)函数体内 static 变量的作用范围为该函数体,其内存只被分配一次并存储到全局变量区,因此其值在下次调用时不会改变;
(2)在类内声明的 static 全局变量可以被该类所用函数访问,但不能被外部函数访问;
(3)在类中的 static 成员变量属于整个类所拥有;
(4)在类中的 static 成员函数属于整个类所拥有,只能访问类的static 成员变量。
2.修饰局部变量:
1.修饰局部变量,使局部变量的生命周期延长到程序结束才会销毁。
2.被修饰的局部变量只会生成一份内存,只会初始化一次。
3.修饰全局变量
1.修饰全局变量只能在本文件中访问,避免重复定义全局变量
4.注意
静态方法只能调用静态方法和静态变量
三、#define宏定义
#define作用在预编译时期,其作用就是代码替换,不做任何类型检查。
#define 宏名 主体;
#define PI 3.1415926
网友评论