免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 帝王在线
打印 上一主题 下一主题

[C] 问个比较菜的问题,c语言代码中static函数和普通函数有什么区别? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-02-23 12:05 |只看该作者
原帖由 帝王在线 于 2006-2-23 11:32 发表

static int func(char* param)
{
....
return 0;
}

int func(char* param)
{
......
return 0;
}

我在别人的帖子里问,别人说是人都知道
太伤自尊了,我还没入门.........

static int func(char* param)              只能被在同一个C源程序文件中的其他函数调用;
int func(char* param)                        可以被其它C源程序文件中的函数调用。

论坛徽章:
0
12 [报告]
发表于 2006-02-23 12:13 |只看该作者
原帖由 caojiqun 于 2006-2-23 12:05 发表

static int func(char* param)              只能被在同一个C源程序文件中的其他函数调用;
int func(char* param)                        可以被其它C源程序文件中的函数调用。



兄弟你是对的,看了前面的几个哥们的发言,说明还不是我一个人没注意过这个问题啊:)

回头出面试题的时候把这个写上

论坛徽章:
0
13 [报告]
发表于 2006-02-23 12:15 |只看该作者
普通对象(自动对象)的值在函数结束时被丢弃

而静态对象(包括函数和变量)具有静态存储持续期间

论坛徽章:
0
14 [报告]
发表于 2006-02-23 12:51 |只看该作者
原帖由 billzhou 于 2006-2-23 12:15 发表
普通对象(自动对象)的值在函数结束时被丢弃

而静态对象(包括函数和变量)具有静态存储持续期间



那是说c++的吧?

论坛徽章:
0
15 [报告]
发表于 2006-02-23 13:03 |只看该作者
这个问题还要讨论这么多楼层?

论坛徽章:
0
16 [报告]
发表于 2006-02-23 13:07 |只看该作者
应该不用,不过确实用static限定函数的用法,我们公司不多,我只用来限定信号处理函数,如果没什么特别的要求。

论坛徽章:
0
17 [报告]
发表于 2006-02-27 00:47 |只看该作者
原帖由 帝王在线 于 2006-2-23 11:37 发表


没关系,麻烦解答一下,谢谢了,我真的想知道,从书上和网上都没查到

谭浩强的C程序设计的书中有描述全局变量和局部变量,以及内部函数和外部函数;
内部函数:
static 类型 函数名(形参表)
内部函数又称为静态函数,只能在一个文件中被使用,不能在其他外部文件中的被调用

外部函数:
extern  类型 函数名(形参表)
常常extern省略,可以在其他文件中被调用。

深入理解计算机系统这本书编译那一章也说的比较详细。
这本书写的很好向大家推荐一下。

论坛徽章:
0
18 [报告]
发表于 2006-02-27 08:56 |只看该作者
原帖由 帝王在线 于 2006-2-23 12:13 发表



兄弟你是对的,看了前面的几个哥们的发言,说明还不是我一个人没注意过这个问题啊:)

回头出面试题的时候把这个写上

哥们儿,你够狠的,刚毕业的学生有几个能注意到这些的,苦了孩子们了!

论坛徽章:
0
19 [报告]
发表于 2006-02-27 09:24 |只看该作者
我想补充一些,在c++类中的static成员函数,不属于某个对象的成员,而是全局的,成员变量同样如此,从编译器上来说,是callback(量外还用其他说法)调用,成员函数是thiscall调用,深入了解c++的人也许会 understand.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP