版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zz_caiqing/article/details/81126659
1:C语言中static的作用:

在函数的返回类型前加上关键字static,函数就被定义成为静态函数。函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。定义静态函数的好处:
<1> 其他文件中可以定义相同名字的函数,不会发生冲突
<2> 静态函数不能被其他文件所用。

存储说明符auto,register,extern,static,对应两种存储期:自动存储期和静态存储期。 auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。关键字extern和static用来说明具有静态存储期的变量和函数。用static声明的局部变量具有静态存储持续期(static storage duration),或静态范围(static extent)。虽然他的值在函数调用之间保持有效,但是其名字的可视性仍限制在其局部域内。静态局部对象在程序执行到该对象的声明处时被首次初始化。
C语言中使用静态函数的好处:
静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。
关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。
c语言中static的语义

1.static变量:1).局部a.静态局部变量在函数内定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。2).全局全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。但是他们的作用域,非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用); 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。

2.static函数(也叫内部函数)只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。区别于一般的非静态函数(外部函数) static在c里面可以用来修饰变量,也可以用来修饰函数。先看用来修饰变量的时候。变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不包含对,不要弄混。

2:C++中作用

在一般的函数前面加上static,作用是:
加了static后表示该函数失去了全局可见性,只在该函数所在的文件作用域内可见
当函数声明为static以后,编译器在该目标编译单元内只含有该函数的入口地址,没有函数名,其它编译单元便不能通过该函数名来调用该函数,这也是对1的解析与说明

*在类的成员函数前面加上static标志符:
成员函数是属于类的,而非对象的,也就是所有该类的对象共同拥有这一个成员函数,而不是普通的每个对象各自拥有一个成员函数。

C++ 中在函数的前面加上static的作用相关推荐

  1. 函数名前加static的作用

    static 先思考一个问题,static修饰一个变量的作用是什么? 它的名字叫做局部静态变量或者全局静态变量,那这个变量到底可以干什么? 它有一个作用就是为了让该变量只在自己的编译单元中可见.对于外 ...

  2. c语言静态成员变量重名会怎么样,C++中静态成员函数与静态成员变量(static )...

    C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用.如果有一些C++知识记不清楚了,它可以帮你很快回 ...

  3. C++中 线程函数为静态函数 及 类成员函数作为回调函数(转载)

    C++中 线程函数为静态函数 及 类成员函数作为回调函数 线程函数为静态函数: 线程控制函数和是不是静态函数没关系,静态函数是在构造中分配的地址空间,只有在析构时才释放也就是全局的东西,不管线程是否运 ...

  4. java中静态代码块的用法 static用法详解(转)

    (一)java 静态代码块 静态方法区别 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程 ...

  5. 获得变量的名称获得传入参数的参数类型与堆栈中的函数名获得变量的名称

    获得变量的名称 获得变量的名称函数 public static string GetVarName(Expression<Func<变量类型, 变量类型>> exp) publ ...

  6. java中静态代码块的用法 static用法详解

    (一)java 静态代码块 静态方法区别 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程 ...

  7. java main方法调用非静态方法_java中main函数怎么调用外部非static方法

    展开全部 方法可以分为静态方法和实例方法 在main函数里调用非static方法(实例方法),那么32313133353236313431303231363533e78988e69d833133336 ...

  8. C++多态中虚函数的深入理解

    c++中动态多态性是通过虚函数来实现的.静态多态性是通过函数的重载来实现的,在程序运行前的一种早绑定,动态多态性则是程序运行过程中的一种后绑定.根据下面的例子进行说明. #include <io ...

  9. C/C++中Static的作用详述

    http://www.dz3w.com/mcu/clanguage/050409//C272.htm 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第 ...

最新文章

  1. AI战场,李彦宏马化腾马云都在频频刷脸,周鸿祎和他的360在想啥呢?
  2. stn专线和otn有什么区别_专线与干线运输的区别是什么?
  3. linux php oracle 乱码,Linux下Oraclesqlplus中文显示乱码的问题的解决
  4. 37.rust属性.txt
  5. layui父页面调用子页面的渲染_layui的iframe父子操作方法
  6. linux学习-将seafile启动脚本设置为开机启动服务
  7. magento 获取产品存货量以及configurable product 下associated children product信息
  8. 推荐系统遇上深度学习(八)--AFM模型理论和实践
  9. (C++)浅谈多态基类析构函数声明为虚函数
  10. IntelliJ IDEA 2018.2.2及以下版本破解方法
  11. 为什么事业单位公务员的公积金比企业里要缴得多?
  12. 【体系结构】Oracle的kernel.shmmax和kernel.shmall设置
  13. java对象值传递和对象传递的总结
  14. 精通javascript 代码总结
  15. HL-1208机器清零方法
  16. thinkphp 对接阿里云短信支付,其主要是新版composer对接阿里短信
  17. Excel如何将二维表转成数据列
  18. 如何快速撰写/总结国内外研究现状?
  19. 3D摇杆控制器一种简单实现!Cocos Creator 3D!
  20. Android 钉钉第三方登录问题

热门文章

  1. c++ primer学习笔记(2)-c++基本数据类型
  2. 「SNOI2019」
  3. 四说大数据时代“神话”:从大数据到深数据
  4. 阿里分布式服务框架Dubbo的架构总结
  5. 2017-2018-2点集拓扑
  6. C++井字棋游戏,DOS界面版
  7. 通过帧中继验证OSPF支持的不同网络类型
  8. swoole 异步redis
  9. Apache如何将HTTP重定向到HTTPS
  10. 什么是防火墙?—Vecloud微云