请教:全局函数和静态函数 有什么区别?
一道面试题:说出全局函数和静态函数的区别,可惜偶没有答出来。 问题点数:10、回复次数:15Top
1 楼kobefly(科比--网络学习中)回复于 2005-03-10 15:13:05 得分 4
静态函数是文件作用域的
只能在本文件内有效
全局函数可以被同一工程的别的文件使用
Top
2 楼flyingfishno1(飞鱼)回复于 2005-03-10 15:39:56 得分 0
除了作用域不同,还有什么不同?Top
3 楼Rudy_zhuang(风筝)回复于 2005-03-10 15:48:45 得分 1
没什么不同。就是加了static修饰的函数的可见范围只在本文件内而已。Top
4 楼Rudy_zhuang(风筝)回复于 2005-03-10 15:50:15 得分 1
不过从编程习惯来看,对于那些确定不会被其他文件使用的函数,用static修饰比较好,从连接的角度,可以减低程序的耦合度。Top
5 楼t0h(t0h)回复于 2005-03-10 15:50:33 得分 0
静态变量要注意
void test123(void)
{
static int i=0;
i++;
cout<<i<<endl;
}
i会一直递增 而不是每次调用test123 i都是1Top
6 楼lovelylulu(forever)回复于 2005-03-10 16:00:44 得分 0
静态函数是程序初始化的时候 就已经调用了
所以里面不能使用那种全局变量什么的
static int function()
{
return 0;
}Top
7 楼uselessman(没用的阿吉)回复于 2005-03-10 16:07:08 得分 0
与全局函数相对应的是哪种函数?局部函数?Top
8 楼voidR(荣耀)回复于 2005-03-10 16:16:05 得分 0
在生命周期是一样的。
作用域不同。
同意:kobefly(科比---开始学习c++!)的观点Top
9 楼Rudy_zhuang(风筝)回复于 2005-03-10 18:17:48 得分 0
回复人: lovelylulu(forever) ( ) 信誉:100 2005-03-10 16:00:00 得分: 0
静态函数是程序初始化的时候 就已经调用了
所以里面不能使用那种全局变量什么的
static int function()
{
return 0;
}
-------------------
这样说有根据吗?Top
10 楼sankt(宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒.)回复于 2005-03-10 20:25:52 得分 0
关注
upTop
11 楼21cnbao(月影孤鸿)回复于 2005-03-11 00:37:49 得分 0
从来没有听说过还有个全局函数,在C语言里,函数分两类:extern和static,如果是static,则函数不参与多文件的连接,如果是extern则参与多文件的连接。一般extern修饰的函数是本模块对其他模块提供的接口,static则是隐藏于模块内部的函数。Top
12 楼GeminiXXXCC(吕布)回复于 2005-03-11 00:47:22 得分 4
C++中全局函数是不属于任何类的,它是相对于类的成员函数而言.
静态函数是类的成员函数,它只能访问类的静态变量,跟类的具体对象无关.Top
13 楼GeminiXXXCC(吕布)回复于 2005-03-11 00:50:13 得分 0
在C中static函数叫内部函数,也有成为静态函数的.只能供本文件使用.
extern一般称为外部函数,extern关键词可省略.Top
14 楼galanz(微小就是永恒)回复于 2005-03-11 11:38:03 得分 0
mark,Top
15 楼yc0188(守护瓶(萍))回复于 2005-03-11 11:39:36 得分 0
静态函数是文件作用域的
只能在本文件内有效
全局函数可以被同一工程的别的文件使用
Top




