问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

static函数与普通函数有什么区别?

发布网友 发布时间:2022-05-01 04:28

我来回答

4个回答

热心网友 时间:2022-06-29 16:28

  static函数与普通函数的区别:
  用static修饰的函数,本限定在本源码文件中,不能被本源码文件以外的代码文件调用。而普通的函数,默认是extern的,也就是说,可以被其它代码文件调用该函数。
  在函数的返回类型前加上关键字static,函数就被定义成为静态函数。普通 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。因此定义静态函数有以下好处:
  <1> 其他文件中可以定义相同名字的函数,不会发生冲突。
  <2> 静态函数不能被其他文件所用。

热心网友 时间:2022-06-29 16:28

我估计不是很明白static那么我给你从C程序开始讲起:
C程序一直由下列部分组成:
1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;
2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。
3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。
4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息(返回地址;环境信息)。
5)堆——动态存储分。

在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。
1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)
2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)
3)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。

好处:
定义全局静态变量的好处:
不会被其他文件所访问,修改
其他文件中可以使用相同名字的变量,不会发生冲突。

局部静态变量
在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。
1)内存中的位置:静态存储区
2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)
3)作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束。

注:当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能再对他进行访问。
当static用来修饰全局变量的时候,它就改变了全局变量的作用域(在声明他的文件之外是不可见的),但是没有改变它的存放位置,还是在静态存储区中。

3. 静态函数
在函数的返回类型前加上关键字static,函数就被定义成为静态函数。
函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。
定义静态函数的好处:
其他文件中可以定义相同名字的函数,不会发生冲突
静态函数不能被其他文件所用。 存储说明符auto,register,extern,static,对应两种存储期:自动存储期和静态存储期。 auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。
关键字extern和static用来说明具有静态存储期的变量和函数。用static声明的局部变量具有静态存储持续期(static storage ration),或静态范围(static extent)。虽然他的值在函数调用之间保持有效,但是其名字的可视性仍*在其局部域内。静态局部对象在程序执行到该对象的声明处时被首次初始化。

热心网友 时间:2022-06-29 16:29

区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

热心网友 时间:2022-06-29 16:30

static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
饥荒巨鸟图腾有什么用 饥荒巨鸟图腾怎么激活 恐惧饥荒健康怎么回复 健康值系统详解 想在京东买32g内存卡,发个商品号给我吧 民族文化浅谈普米族的宗教信仰 iphone4s进入恢复模式后,过几十秒就自动关机 hdr10是什么意思(hdr10是什么) 郑州禧年化妆摄影学校的专业设置 乔迁择吉2022年属鸡4月最佳入新居日子? 变电站中110kv配电变压器最小多大容量? 怎样免费装扮QQ空间皮肤? 土豆片敷脸有什么作用 土豆涂脸有什么功效脸 用土豆敷脸有什么作用 生土豆敷脸有什么好处 风油精可以洗鞋子白边吗 为什么别人洗鞋子的白边洗的那么白,我就不会呢?别人怎么洗的? 土豆敷脸有什么好处 如何清洗鞋子的白边 求知道清洗比较好的汽车空调清洗机! 中央空调清洗机什么牌子的好? 谁知道10.23日,广东省佛山市乐从钢材市场(船用钢板)报价是多少钱一吨??谁知道说下 佛山市锦荣钢材有限公司怎么样? 我的锤子为什么每次解锁后都是显示的这样 佛山市源德裕钢业有限公司怎么样? 佛山市浙粤不锈钢有限公司介绍? 锤子坚果pro版本怎么退回原来的版本? 洪家钢材市场会搬迁吗? 佛山.东莞那个相比钢材市场比较发达成 我想在佛山开一间螺纹钢销售店,但是不知进货渠道,麻烦知道的朋友告诉一下。谢谢! vb中的static定义 什么是静态成员函数。 计算机c语言中什么是静态函数 静态static的C中的static函数 static定义的函数里面的变量是不是也可以一直存储? C++ static 函数的定义、使用,参数只有类型,没有形参是什么情况? static函数里定义static变量 静态函数和普通函数的区别 现在高端护发精油有哪些好的品牌? 护发精油哪个品牌好用,兰蔻如何 卷发护发精油什么牌子好 怎么用别人的找到他的抖音号? H5移动场景怎么插入报名表 我在Excel 的表格的单元格H5里把两个单元格A2和B2相加。现在要在H5单元格插入批注-H5=A2+B2(公式),... 新浪微博技巧 能通过查抖音吗 怎么用别人的找到他的抖音号? 怎么可以用别人的可以查到别人的抖音号- 问一问 怎么用别人的找到他的抖音? 用朋友微信的头像,能不能找到朋友的抖音?或者说是用,能不能找到他的抖音?_百度问一问