C语言中使用静态函数的好处

静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。
关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。

c语言中static的语义

1.static变量:

1).局部

a.静态局部变量在函数内定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。

b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。

2).全局

  全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。但是他们的作用域,非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用); 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。

2.static函数(也叫内部函数)只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。

区别于一般的非静态函数(外部函数) static在c里面可以用来修饰变量,也可以用来修饰函数。 先看用来修饰变量的时候。变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不包含对,不要弄混。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react+redux+generation-modation脚手架搭建一个todolist

TodoList1. 编写actions.js2. 分析state 试着拆分成多个reducer3. 了解store4. 了解redux数据流生命周期5. 分析容器组件和展示组件 搞清楚,数据到底是如何流动的?6. 编写展示组件的代码7. 编写容器组件8. 传入store9. 总结10. 参考TodoList 脚手架Githu…

c++11 原子类型与原子操作

1、原子类型和原子操作(1)类型(2)操作(3)详述● 原子类型只能从其模板参数类型中进行构造,标准不允许原子类型进行拷贝构造、移动构造,以及使用operator等● atomic_flag 是一个原子…

get_metrology_object_measures获取测量区域和计量模型的计量对象的边缘位置结果

目录get_metrology_object_measures(算子)描述参数get_metrology_object_measures(算子) get_metrology_object_measures - 获取测量区域和计量模型的计量对象的边缘位置结果。 get_metrology_object_measures(&…

依弗科(上海)机电设备有限公司

机器人喷涂倒计时,上帝帮我实现愿望吧 阿门 

外部变量和外部函数

C程序由一组对象组成,这些对象包括程序中所使用的变量和实现特定功能的函数。变量可以分为函数内部定义、使用的变量和函数外部定义的变量,通常情况下,把函数内部定义、使用的变量称为内部变量或局部变量,而将在函数外部定义的、供…

gulp中使用babel-polyfill编译es6拓展语法

今天想在新项目中使用es6的generators,发现虽然gulp已经有了babel编译,但仍会报错,网上查找后发现解决办法是加载polyfill,但是找到的办法都不试用我的项目。 解决办法:在index.html中加载node_modules的babel-polyfil…

CoDeSys

CoDeSys是全球最著名的PLC内核软件研发厂家德国的3S(SMART,SOFTWARE,SOLUTIONS)公司出的一款与制造商无关的IEC 61131-1编程软件。CoDeSys 支持完整版本的IEC61131标准的编程环境,支持标准的六…

使用halcon结合机械XY轴对相机进行9点标定

小哥哥小姐姐觉得有用点个赞呗! 先在halcon中计算仿射变换矩阵并验证 //在图像中找到的模板中心位置 PicX:[1680.721,2065.147,911.499,526.798,1290.920,1285.731,1300.953] PicY:[968.321,964.366,976.283,980.035, 587.055,394.727,1355.487] //与图像中查找…

Ubuntu Linux 提出新的发布模式——测试周

2019独角兽企业重金招聘Python工程师标准>>> 导读开源技术项目最大的优势之一就是社区的每个人都可以自由地提出想法,如果获得社区支持,它可以变成现实。著名的 Ubuntu 开发人员 Simon Quigley 就提出了一个可能改变 Ubuntu Linux 开发过程的…

264 I和IDR

I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I帧区别开,所以才把第一个首个I帧叫IDR,这样就方便控制编码和解码流程。IDR帧的作用是立刻刷新,使错误不致传播,从IDR帧开始,重新算一个新的序列…

gen_caltab生成标定文件

目录gen_caltab(算子)描述参数gen_caltab(算子) gen_caltab - 为具有矩形排列标记的校准板生成校准板描述文件和相应的PostScript文件。 gen_caltab(:: XNum,YNum,MarkDist,Diamet…

主席树,喵~

稍微总结一下主席树吧 Too Difficult!搞了一天搞出一大堆怎么令人悲伤的辣鸡代码。总之先总结一下吧,以后碰到这种问题直接拿去毒害队友好了。 UPD 5/24 苟狗是沙比 一个节点记录三个信息:lson,rson,sum 用pid表示节点个数。 build void buil…

【转】小白级的CocoaPods安装和使用教程

原文网址:http://www.jianshu.com/p/e2f65848dddc 百度有很多CocoaPods的安装教程.第一次看的时候,确实有点摸不透的感觉.经过思考,一步一步来实践,前后花了三十几分钟,才顺利使用..所以想了想,我还是写一个小白级的教程吧.细到每一个细节都说明. 让你不用10分钟解决…

常见错误总结

少打头文件 少打using namespace std; 命名冲突&#xff0c;全局变量与局部变量命名一致&#xff0c;导致使用的值不是期望值 边读边写&#xff0c;导致改后读&#xff0c;覆盖写入的值 长整数移位溢出&#xff0c;1<<63是错误的&#xff0c;应该写成1ll<<63 循环变…

x264_sps_init

x264_sps_init此函数为序列量化集的初始化。主要对结构体x264_sps_t中参数的初始化。 void x264_sps_init( x264_sps_t *sps, int i_id, x264_param_t *param ) { sps->i_id i_id;首先设置序列参数集的ID b_qpprime_y_zero_transform_bypass判断码率控制方法是否是恒定质量…

HALCON相机标定相机内参相机外参

目录相机标定1.相机标定是什么2.怎么使用halcon进行相机内外参标定&#xff1f;&#xff08;1&#xff09;搭建硬件1.**相机连好电脑&#xff0c;用相机厂家软件打开相机&#xff0c;检查一下相机是否正常。**2.**接下来使用halcon连接相机**&#xff08;2&#xff09;开始标定…

ionic更改端口号

ionic serve -p 8888 —— 重新指定端口号为8888 serve [options] ............................... 启动本地服务器进行开发测试 dev/testing   [--consolelogs|-c] ..................... 输入app的控制台到ionic的控制台显示   [--serverlogs|-s] .....................…

angular change the url , prevent reloading

http://stackoverflow.com/questions/14974271/can-you-change-a-path-without-reloading-the-controller-in-angularjs $location.search({vln: $scope.vln_id}, false);会改变url中 &#xff1f; 后面的 搜索参数&#xff0c;但是controller不会重新实例化。angular 官方文档…