免费注册 查看新帖 |

Chinaunix

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

[C] C语言里有没有static这个关键字? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-06-26 09:47 |只看该作者
原帖由 simhare 于 2009-6-26 09:45 发表
谢谢各位的回复,我正在看。
----------------------------
那么谁能解决第二个问题呢?
纯C实现冒泡排序!

谭浩强的书上指针还是那一章上面讲了冒泡法的

论坛徽章:
0
12 [报告]
发表于 2009-06-26 09:51 |只看该作者
额,楼主一直强调纯C,我不是很理解了~~~

论坛徽章:
0
13 [报告]
发表于 2009-06-26 09:51 |只看该作者

回复 #10 aaaaa5aa 的帖子

我看到有人说:
============
当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数外部函数
1 内部函数(又称静态函数)
如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一支程序的其它文件中的函数调用,这种函数称为内部函数
定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示:
static  函数类型  函数名(函数参数表)
{……}
关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数
但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件
使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。
================
哦,看来static 本来是有两层涵义的,一是"静态的"存储方式,二是函数的作用域

[ 本帖最后由 simhare 于 2009-6-26 09:55 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2009-06-26 09:52 |只看该作者

回复 #11 gawk 的帖子

好像是习题上面有

论坛徽章:
0
15 [报告]
发表于 2009-06-26 09:57 |只看该作者

回复 #12 lsupper 的帖子

我错了,
我想说的是"标准C"。

论坛徽章:
0
16 [报告]
发表于 2009-06-26 09:58 |只看该作者

回复 #13 simhare 的帖子

他还提到了外部函数:
===============
2 外部函数
外部函数的定义:
在定义函数时,如果没有加关键字“static”,表示此函数是外部函数,
或者加了关键字“extern”,也表示此函数是外部函数:
[extern]  函数类型  函数名(函数参数表)
{……}
调用外部函数时,需要对其进行说明
[extern]  函数类型  函数名(参数类型表)[,函数名2(参数类型表2)……];
-----------------------
为什么"调用外部函数时,需要事先对其进行说明"?
嗯,原来是在进行调用外部函数之前要先把要调用的函数,"申明"一下。
================
[案例]外部函数应用。
(1)文件mainf.c
main()
{  
      extern void input(…),process(…),output(…);
      input(…);  
      process(…);  
      output(…);
}

(2)文件subf1.c
……
extern  void input(……)                           /*定义外部函数*/
{……}
(3)文件subf2.c
……
extern  void process(……)                     /*定义外部 函数*/
{……}
(4)文件subf3.c
……
extern void output(……)                        /*定义外部函数*/
{……}
==================

[ 本帖最后由 simhare 于 2009-6-26 10:16 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2009-06-26 10:03 |只看该作者
原帖由 simhare 于 2009-6-26 09:58 发表
他还提到了外部函数:
===============
2 外部函数
外部函数的定义:在定义函数时,如果没有加关键字“static”,或冠以关键字“extern”,表示此函数是外部函数:
[extern]  函数类型  函数名(函数参数表) ...

其实加了static后只是静态只是相对的,同样有方法可以在外部调用
不过你应该看一下谭浩强的书,花个几天时间熟悉一下基础知识

论坛徽章:
0
18 [报告]
发表于 2009-06-26 10:10 |只看该作者

回复 #13 simhare 的帖子

static其中一个重要功能是隐藏,LS你知道不,如果一旦设置为static,就不能被本文件外的函数调用

论坛徽章:
0
19 [报告]
发表于 2009-06-26 10:13 |只看该作者
原帖由 aaaaa5aa 于 2009-6-26 10:10 发表
static其中一个重要功能是隐藏,LS你知道不,如果一旦设置为static,就不能被本文件外的函数调用


还有其他很多用途

论坛徽章:
0
20 [报告]
发表于 2009-06-26 10:30 |只看该作者
不过就是改变变量(函数也可以看作变量)的linkage,搞出来这么多名堂
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP