static修饰局部变量改变了变量的生命周期,生命周期改变的本质是改变了变量的存储类型,本来一个局部变量是储存在内存的栈区的,但是被static修饰后存储到了静态区。存储在静态区的变量和全局变量是一样的,生命周期就和程序的生命周期就一样了,只有程序结束变量才能销毁,内存才能回收,但作用域是不变的。 4.extern extern...
1.对函数 完整的定义一个外部函数(可以省略extern) 完整的声明一个外部函数(可以省略extern) 2.对变量 只能声明一个外部变量(不能省略extern) 在函数里面定义extern的变量表示应用程序中其他地方的变量(引用某个全局变量,并非定义) static(内部) 1.对函数 定义内部函数(不能省略static) 声明内部函数(不能省略static...
下面是C语言中static和extern的'区别,一起来学习下吧: static: 一、在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。 1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。 a.在全局区分配内存。 b.如果没有初始化,其默认值为0. c....
static和extern的使用区别 1. static: 局部:只会初始化一次,内存只有一份内存;改变不了局部变量的作用域但可延长其生命周期至程序结束才被销毁。 全局:仅限于当前文件的作用域,外部类不可访问该变量 2.extern: 无static:该全局变量的作用域是整个项目文件 当其他类想访问该全局变量时,可在该类中使用extern 修饰...
首先,extern和static完全不同,extern不能定义一个变量,extern表示的是“已经存在一个变量,但是不在当前的编译单元内,需要在其他编译单元中寻找。”static会定义一个变量,但是分成多种情况。--- 先说extern 和 变量的关系。先说只有一个文件(编译单元)的:int i=10; //这个是定义一个全局变量...
总之,extern和static是C语言中非常重要的关键字,它们分别用于声明外部引用和局部静态变量,帮助开发者更好地管理程序中的变量和数据。理解它们的区别对于编写高效、安全的C语言程序至关重要。extern关键字通常用于链接不同文件中的相同变量,确保它们具有相同的内存地址。当在某个文件中声明为extern时,它...
无论是在C还是OC中,static、define、const和extern这几个词有时候会用到,尽管频次不高,使用的情况虽然不多,但是基本上也不会出错,下面我们就详细的说一下它们的用法、区别以及使用场景等。 static 它是静态变量,从面向对象的角度触发,当需要一个数据对象为整类而非某个对象服务,同时又力求不破坏类的封装性,既要...
extern是C/C++语言中表明函数和全局变量作用(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其他模块中使用。 4.auto auto指定该变量采用自动存储机制-局部变量默认采用这种方式,对定义局部变量,auto关键字可以忽略。 在正常开发中,我们常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成...
中国有句俗语:磨刀不误砍柴工。在平时的工作过程中,有时候不是很清楚这三者之间的区别和用法,到底什么时候用static,什么时候用extern,什么时候用const。下面一一道来。 Static: 顾名思义,static英文的意思是静态,用static可以定义静态变量,在其他的语言中,例如c#,java等,都是有静态类,但是,其实oc中是没有静态类,...
static是静态存储类型,属于局部变量,只能用于同一个函数内,在其他函数内使用是错误的。extern是外部存储类型,属于全局变量,可以用于从他定义开始的后续所有函数内。假设 在note1.c文件中定义static int A; 那么在note2.c文件中,是不能用A做为变量名吗?note2.c不能引用note1.c内的A,但是可以...