美文网首页
static 和 extern 关键字

static 和 extern 关键字

作者: Sherlock_Jim | 来源:发表于2019-11-14 15:55 被阅读0次

static 和 extern 是c语言中的两个关键字,是用来修饰变量和函数.

1.static和extern修饰局部变量的效果.

a.static修饰局部变量

1).如果局部变量被static修饰.这个变量就叫做静态变量.

2).被static修饰的局部变量不再存储在栈区域,而是存储在常量区中.

3).当第一次执行这个函数的时候,就会将这个静态变量声明在常量区,函数执行完毕之后,这个静态变量也不会被回收.

后面再去执行这个函数的时候,声明静态变量的这句话就不会再执行了,而是直接略过,直接使用这个静态变量的值,函数

无论执行多少次,这个静态变量只有1份.

没有使用static修饰局部变量 使用static修饰局部变量

b.extern不能修饰局部变量

2.static和extern修饰全局变量的效果.

全局变量:函数和全局变量是具有相似性的.

1)写一个函数,最完整的步骤应该分两步,先写函数的声明,再写函数的实现.

2)写一个全局变量,最完整的步骤也应该是两步,先写全局变量的声明(只定义全局变量,而不赋值),再写函数的实现(定义全局变量并初始化).

3)全局变量的声明放在使用这个全局变量之前,全局变量的声明放在使用这个全局变量前后都可以正常取值.

4)全局变量如果只有声明.没有实现,那么这个时候编译器会自动的帮助我们去实现这个全局变量.自动实现的时候,会将这个全局变量自动初始化为0.

5)全局变量也可以只有实现,没有声明.但是这个时候,这个全局变量的实现必须要在使用这个全局变量的函数之前.

6)当我们分模块开发的时候,如果要在模块中声明全局变量,就应该把这个全局变量的声明写在.h文件当中,全局变量的实现要写在.c文件中,并且这个全局变量必须使用static或者extern修饰,这样才能在别的模块访问的到.这里static 和 extern 修饰全局变量的区别是,使用extern修饰,这个模块中的全局变量就可以跨模块访问并取到真正的值,使用static修饰,虽然能访问不报错但是并没有取到真正的值.

3.static和extern修饰函数的效果.

1)如果函数被extern修饰,这个函数可以跨模块调用.

2)如果函数被static修饰,那么这个函数只能在当前函数中调用,但是这个函数不可以跨模块调用,运行Xcode的时候会报错的.

3)如果函数没有写static或者extern,默认是extern.

相关文章

  • static 和 extern 关键字

    static 和 extern 是c语言中的两个关键字,是用来修饰变量和函数. 1.static和extern修饰...

  • C中的内存管理

    存储类别、链接和内存管理 关键字:auto 、extern 、static 、register 、const、vo...

  • C语言复习之extern和static

    static和extern关键字对变量的作用 extern1.在main函数前面对变量a进行提前声明。也就是让ma...

  • iOS extern关键字

    extern关键字 原来经常看到extern关键字,但是一直搞不懂具体的用法,以及跟static的区别。今天就要搞...

  • static和extern关键字

    static和extern对变量的作用 C语言里的变量分两种:全局变量和局部变量。全局变量又分为外部全局变量和内部...

  • static和extern关键字

    static关键字修饰局部变量: 当static关键字修饰局部变量时,只会初始化一次且在程序中只有一份内存;关键字...

  • 5_变量属性

    关键词:C语言的变量属性、auto关键字、 register关键字、 static关键字、extern关键字 1....

  • C/C++关键字介绍

    一、 typedef typedef为C/C++的关键字,与auto、extern、mutable、static、...

  • const、static、extern、宏

    const static extern 宏 const与宏的区别 static和const的联合使用 extern...

  • C语言中关键字auto、static、register、cons

    关键字auto、static、register、const、volatile、extern 这些关键词都是c++基...

网友评论

      本文标题:static 和 extern 关键字

      本文链接:https://www.haomeiwen.com/subject/ycvrictx.html