static extern const修饰符

const

const修饰的东西不能被修改(由左至右解读--> 顺时针螺旋法则)
指针类型根据位置的不同可以理解成3种情况:
 
1.常量指针
NSString * const pt1;
//常量指针,指向一个字符串
//pt1初始化之后不能赋值,指向的对象值可以修改。
 
//定义字符串常量
//NSString* const pt1=@"123";
@"123"存储在文字常量区,相同的字符串只存储一份
NSString* pt2=@"123";
使用NSLog(@"%p,%p",pt1,pt2);可以看到地址相同
 
2.指向常量的指针
const NSString * pt2;
//指针变量,指向一个常量字符串
// 初始化之后可以赋值,即指向别的常量,指针本身的值可以修改,指向的值不能修改
 
3.指向常量的常量指针
const NSString *  const pt3;
 
extern

一般项目中,定义全局常量,会写在独立文件里

Constants.h 提供外接访问常量:

extern NSString * const str;

Constants.m 定义常量:

NSString * const str=@"1";

 

定义全局变量

//x .h 声明
extern const NSString * AA;
//x .m 定义
const NSString * AA = @"abc";
// 调用
#import "x.h"

 

static(静态局部变量/指定内部全局变量)

C语言的变量可分为动态存储变量和静态存储变量。

动态存储:程序在运行期间根据需要动态分配内存。

静态存储:程序在运行开始就分配固定内存。

C程序运行的内存分为程序区、静态存储区和动态存储区。

静态存储区存放:

1.全局变量

2.static修饰的局部变量

 

使用静态局部变量的情况:

1.需要变量能保留上一次调用结束时的值。

2.希望变量只被初始化一次,以后只是被引用,不希望对其重新赋值。(单例模式)

 

 

你可能感兴趣的:(static extern const修饰符)