static extern const修饰符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了static extern const修饰符相关的知识,希望对你有一定的参考价值。

const

const修饰的东西不能被修改(由左至右解读-->顺时针螺旋法则
指针类型根据位置的不同可以理解成3种情况:
 
1.常量指针
NSString * const pt1;
//常量指针,指向一个字符串
//pt1初始化之后不能赋值,指向的对象值可以修改。
 
//定义字符串常量
//NSString* const [email protected]"123";
@"123"存储在文字常量区,相同的字符串只存储一份
NSString* [email protected]"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 [email protected]"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修饰符的主要内容,如果未能解决你的问题,请参考以下文章

什么是类型修饰符?

限定符

c++ static及const(开发者在线)

总结C++与C#中的static静态修饰符

Objective-C中的const ,extern,static

OC中extern,static,const的用法