C语言中的static函数跟非static函数有什么区别,什么时候用static函数

nokiaisacat 2010-07-23 03:04:34
C语言中的static函数跟非static函数有什么区别,什么时候用static函数
...全文
1308 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenn 2010-10-21
  • 打赏
  • 举报
回复
谢谢!学习了
jinchats 2010-07-24
  • 打赏
  • 举报
回复
用static 修饰的函数的生存周期是整个程序,但是作用域只是定义该函数的源文件。该源文件外的其它函数都不能调用static 函数。
而非static 函数的生存周期是整个程序,作用域也是整个程序。该源文件外的其它函数可以先声明该函数,然后调用。
cao_julians 2010-07-24
  • 打赏
  • 举报
回复
对于函数而言,static和extern两个关键字的意义相反
static函数的作用域在当前文件中
extern函数的作用域在当前工程(无论有多少个源码文件)中,而C中对函数的默认设置(不写关键字时)就是extern。
Thirty 2010-07-24
  • 打赏
  • 举报
回复
再次学习。。。
中衣 2010-07-24
  • 打赏
  • 举报
回复
来看一
nokiaisacat 2010-07-24
  • 打赏
  • 举报
回复
以上各位的解释都已经拜读,学习了,现在比较忙,晚上慢慢给分
nokiaisacat 2010-07-24
  • 打赏
  • 举报
回复
以上各位的解释都已经拜读,学习了,现在比较忙,晚上慢慢给分
hrx1989 2010-07-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ayw215 的回复:]

C/C++ code

静态函数在c中只有用来表示不能被其它文件访问的全局函数这这一个作用

1. 静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。
2. 关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。 使用内部函数的好……
[/Quote]
学习了!!!
Simao 2010-07-24
  • 打赏
  • 举报
回复
学习了...
hyuanqing 2010-07-24
  • 打赏
  • 举报
回复
static 不是能让调用后变量的值在下次调用时依然不变吗?
不用static的话调用过一次再调用时值就不与第一次相同了。

这个算是简明的说用途吧。
fdisksys 2010-07-24
  • 打赏
  • 举报
回复
static型函数我一直以为是返回值的类型,悲剧
俊哥有个blog 2010-07-23
  • 打赏
  • 举报
回复
这家伙是自动回帖吗?
[Quote=引用 11 楼 zhao4zhong1 的回复:]
本质上就是将本来保存在堆栈中的临时变量改为保存在全局变量区
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
[/Quote]
zecard_fu 2010-07-23
  • 打赏
  • 举报
回复
接分 接分
东莞某某某 2010-07-23
  • 打赏
  • 举报
回复
在引擎里搜下 一大箩筐的总结
aozhi 2010-07-23
  • 打赏
  • 举报
回复
链接属性不一样。
static函数是local的,其他模块代码不能调用。
没有static的函数是external的,其他模块代码可以调用。
wissup 2010-07-23
  • 打赏
  • 举报
回复
static 表明只能在这个文件中使用
赵4老师 2010-07-23
  • 打赏
  • 举报
回复
本质上就是将本来保存在堆栈中的临时变量改为保存在全局变量区
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
jldream110 2010-07-23
  • 打赏
  • 举报
回复
static 在函数体外表示 链接属性 是内部。 也就是说 其他源文件不能引用 声明 static的函数
aaabianhuakai 2010-07-23
  • 打赏
  • 举报
回复
大家都说完了

表象上就是加了static别的文件引用这个函数会出错
cattycat 2010-07-23
  • 打赏
  • 举报
回复
static限制函数是内部链接的,其他文件中不可用。
再深入点就是飞雪说的,不用在跳转表中加这个表项,其他外部链接的得加,因为可能在外部被调用了。

再说一句,飞雪果然牛啊。
加载更多回复(7)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧