首页 > 其他分享 >static和extern

static和extern

时间:2022-11-09 13:40:38浏览次数:33  
标签:函数 修饰 static 模块 extern 全局变量

static和extern

1.这是我们C语言中的两个关键字.是用来修饰变量和函数

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

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

3),static和extern修饰函数的效果

2,static修饰局部变量

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

2),静态变量不再存储在栈区域,而是存储在常量区。

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

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

4)static修饰的静态变量,函数结束不会被回收,仍然存在,函数无论执行多少次。这个静态变量只有1份。

3.extern不能修饰局部变量。

4.全局变量,

1),写1个函数,最完整的步骤应该分两步,

-> 先写函数的声明

->再写函数的实现

2),我们写1个全局变量.

最完整的步骤也应该分为两步--> 先写全局变量的声明.

只定义全局变量.而不赋值,这个就叫做全局变量的声明.int num

再写全局变量的定义。int num = 10;

定义全局变量并初始化。也叫做全局变量的实现

这个时候,全局变量的声明可以放在使用这个全局变量的前面,全局变量的定义可以放在使用全局变量的后面这个时候,仍然可以正常取值。 

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

4),全局变量也可以只有定义,而没有声明,但是这个时候,这个全局变量的定义必须要在使用全局变量的函数的前面

5.当我们分模块开发的时候.如果要在模块中声明全局变量

1),全局变量的声明要写在.h文件中,

2).全局变量的实现要写在.c文件中

3),如果将全局变量定义在模块中,这个全局变量就必须要使用static或者extern修饰

如果定义在模块中的全局变量,使用extern修饰。这个模块中的全局变量就可以跨模块访问,如果定义在模块中的全局变量,使用static修饰。这个模块中的全局变量就只能在当前模块中访问,虽然,不报错,但是并没有取到真正的值.

6,static和extern修饰函数

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

2),如果函数被static修饰,那么这个函数只能在当前模块中调用,无法跨模块调用

如果函数没有写static或者extern 那么这个函数默认就是extern


标签:函数,修饰,static,模块,extern,全局变量
From: https://blog.51cto.com/u_15809685/5835915

相关文章

  • Elastaticsearch 集群部署
    系统Ubuntu16.04Elastaticsearch5.6.9Kibana5.6.9官网地址https://www.elastic.co/products/elasticsearch主机名称IPes-n1192.168.175.76......
  • 关于static变量
    #include<cstdio>#include<iostream>usingnamespacestd;voidtest0(){for(inti=1;i<=3;i++){staticintsum=0;sum++......
  • 接口中得static属性
    我们都知道子类继承父类的时候能继承父类的static属性修饰的方法,但是无法重写父类的static属性修饰的方法。  publicclassFather{publicstaticvoidsout(){......
  • 小新学Java5-【String类、static关键字、Arrays类、 Math类】
    一、String类1.String类概述 创建字符串的3+1种方式:三种构造方法:①publicString():创建一个空白字符串,不含任何内容。②publicString(char[]array):根据字符数组的......
  • extern C
    被extern"C"修饰的变量和函数是按照C语言方式编译和连接的。首先看看C++中,在未加extern"C"声明时,对类似C的函数是怎样编译的。作为一种面向对象的语言,C++......
  • static_cast和dynamic_cast详解(转载,不错的文章就转载了,作为收藏吧)
    派生类不仅有自己的方法和属性,同时它还包括从父类继承来的方法和属性。当我们从派生类向基类转换时,不管用传统的c语言还是c++转换方式都可以百分百转换成功。但是可怕是向......
  • extern关键字
    今天写代码的时候,需要多个文件使用同一个常量(全局的常量)。于是就把常量的声明放到一个头文件里头,常量的定义放到对应的源文件里头。声明在constant.h里extern const i......
  • static关键字详解
    1.静态变量和静态方法静态属性可以用对象调用,也可以直接用类名来调用静态方法可以用对象调用、类名调用、直接调用通常直接用类名调用静态属性和静态方法2.静态代码块......
  • 2022 JAVA-static this 关键字
         ......
  • Static应用知识
    工具类:工具类都是一些静态方法,每个方法都是以完成一个公用的功能为目的因为工具类的这些方法只是为了完成一个公用功能,所以用静态来定义实例方......