[PIC®/AVR®/dsPIC®产品] C语言中的静态(static)函数你会用吗?

[复制链接]
1702|16
 楼主| gaoyang9992006 发表于 2023-3-6 15:09 | 显示全部楼层 |阅读模式
事情是从下面这个函数开始的
  1. static void dap_delay_us(int delay)
  2. {
  3. while (delay)
  4. {
  5. int del = (delay > 100000) ? 100000 : delay;
  6. DAP_CONFIG_DELAY((DAP_CONFIG_DELAY_CONSTANT * 2 * del) / 1000);
  7. delay -= del;
  8. }
  9. }
你知道这个函数的声明类型static是什么意思吗?
很多人知道定义变量用这个叫静态变量
那么修饰函数那肯定就是静态函数了,静态函数该如何理解?

在函数的返回类型前加上关键字static,函数就被定义成为静态函数。函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。
C语言中使用静态函数的好处:
(1)、静态函数会被自动分配在一个一直使用的存储区,直到程序结束才从内存消失,避免调用函数时压栈出栈,速度快很多
(2)、其他文件可以定义相同名字的函数,不会发生冲突
(3)、静态函数不能被其它文件调用,作用于仅限于本文件



gygp 发表于 2023-6-6 18:05 | 显示全部楼层
c语言中静态变量是怎么用的              
小灵通2018 发表于 2023-6-7 22:09 | 显示全部楼层
静态变量懂,这个静态函数第一次听说,原来是这样的,只在本文件可见啊。。。
maudlu 发表于 2023-6-10 11:39 | 显示全部楼层
用于在函数中声明“静态变量”用,在每一次调用后,该变量并不在函数返回时立即释放,变量中保存的值,可以保留到下一次调用时继续有效。
youtome 发表于 2023-6-10 11:47 | 显示全部楼层
在C语言中具体静态变量static要这么去用?
mollylawrence 发表于 2023-6-10 12:46 | 显示全部楼层
其他文件可否调用文件中的static函数?
usysm 发表于 2023-6-10 13:22 | 显示全部楼层
static在c语言中是私有、静态意思。
wangdezhi 发表于 2023-6-10 13:43 | 显示全部楼层
静态变量,保存 p;若不加static,一旦子函数 退出后,该变量将丢失,加了,就会保持住,下次回来的时候,这个值依然存在。
wengh2016 发表于 2023-6-10 13:55 | 显示全部楼层
在每一次调用后,该变量并不在函数返回时立即释放,变量中保存的值,可以保留到下一次调用时继续有效。
uiint 发表于 2023-6-10 14:06 | 显示全部楼层
c语言 static 作用范围是什么呢?
lzbf 发表于 2023-6-10 17:07 | 显示全部楼层
静态成员函数主要用来方位静态数据成员而不能访问非静态成员。
10299823 发表于 2023-6-10 17:53 | 显示全部楼层
动态函数执行结束后,函数占用的内存会被注销掉,数值不保留,静态就可以保留数值
iyoum 发表于 2023-6-13 21:20 | 显示全部楼层
静态函数可以避免与其他程序模块的函数重名,有助于提高代码的可维护性和可靠性。
belindagraham 发表于 2023-6-13 22:00 | 显示全部楼层
在函数里的static变量意味着这个变量的生存期是全局
chenci2013 发表于 2023-6-13 22:41 | 显示全部楼层
静态函数在编译时就已经确定了地址,因此调用速度更快。
mattlincoln 发表于 2023-6-14 10:04 | 显示全部楼层
隐藏、保持变量内容的持久、默认初始化为0。
chenci2013 发表于 2023-6-14 10:30 | 显示全部楼层
调用到的函数要在调用的位置的前面有所声明或者定义。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16405

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部