C语言之static和extern
/* 全局变量和局部变量 : 全局变量 : 1,如果没有初始化,默认值为0; 2,存储在静态区中,随着程序启动而创建,程序结束而释放; 局部变量 : 1,作用域 : 自定义位置起至return或"}"结束; 2,同一个作用域内,局部变量不可同名; 3,未初始化的局部变量中,保存着一堆乱码; 4,变量的调用原则 : 就近原则; 5,局部变量保存在栈中,作用局结束即被释放; 内部全局变量和外部全局变量 : 内部全局变量 : 以static关键字修饰,只能够被当前文件访问的全局变量 1,同一作用域内可定义多个同名的内部全局变量,同名的内部全局变量指向同一块内存空间; 2,不同文件中的内部全局变量指向不同的内存空间; 外部全局变量 : 默认情况下,创建的全局变量均为外部全局变量,可其他文件访问的全局变量; 1, 可同时定义多个同名的外部全局变量,同名的外部全局变量指向同一块内存空间; 2, 外部全局变量的安全性问题 : 在Xcode升级之后,处于安全性考虑,不在允许在其他文件中,直接访问外部全局变量,但仅仅只是Xcode不支持而已,但其本身,并没有错, 在终端中,可正常执行.但在Xcode中想要在其他文件中,访问外部全局变量,必须以extern关键字声明,要访问某一个外部全局变量,明确用户知道自己当前操作; 3,extern的其他用法,在同一个文件中,如果变量定义在变量使用之后,同样可以使用extern进行声明; static对局部变量的作用 : 1,会将局部变量创建在静态区中,延长其生命周期,减少局部变量的重复创建和释放,提高程序执行效率; 2,作用域 : 自定义位置起至文件末尾; 3,当系统遇到static修饰的局部变量时,首先会检查静态区中是否存在该变量,如果存在,则直接使用,该语句仅仅起到声明的作用,如果不存在,则在静态区中创建该变量; static和extern对函数的作用 : 内部函数和外部函数 : 外部函数 : 默认情况下,创建的函数,即为外部函数,可被其他文件访问; 内部函数 : 以关键字static修饰,只能够被当前文件访问的函数;当然static也可用于声明一个内部函数; */
本文标题:C语言之static和extern
标题网址:http://scyanting.com/article/jdghgh.html