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修饰符的主要内容,如果未能解决你的问题,请参考以下文章