手机浏览器扫描二维码访问
听到「隐身术」三个字,我和小弦子眼里瞬间就开始放光,就连旁听的六叔叔注意力都集中了几分。
就在我们都静等老爹下文的时候,老爹却偏偏不着急讲了,又是喝水,又是擦眼镜什么的,一幅不慌不忙的样子,恨得我牙根儿都痒痒。
吊足了我们的胃口后,老爹这才回到自己的电脑旁边徐徐说道:「一直以来,因为我们的程序功能比较简单,所以程序里面就只有一个c文件,但是随着我们的程序越来越复杂,如果还把所有代码都放在一个c文件中就显得特别臃肿,不方便阅读。
其实推箱子这个程序已经暴露出来这个问题了,有时候我们需要查看某行代码的时候,往往要翻阅很久。
于是乎我们就要对程序的功能进行分块,各个块完成相应的一些小功能。
最后把小功能组合在一起,就完成了一个大的功能了。
为了方便管理和阅读,一般我们就会按块来创建c文件,也就是说,程序中可能会存在多个c文件。
在默认情况下,我们定义在一个c文件的全局变量毫无秘密可言,因为其他的c文件可以通过一个关键字——exteal让它显出真身,然后就可以肆无忌惮地把它的脸按在地板上摩擦。
比如说我们在zhangsanc文件里声明了一个全局变量:
intheart=10;
然后还有一个lisic文件,它想看看zhangsanc中的heart是什么,于是它就在自己声明全局变量的地方写了这么一句:
extealintheart;
这个时候在lisic中就能对zhangsanc中的heart为所欲为了。
那这样会不会有什么问题么?」
老爹抛出了他的疑问。
我和小弦子对视了一眼,相互摇了摇头。
问题肯定是有的嘛,不然老爹怎么可能会无的放矢,跟我们扯这么多有的没的。
「既然你们想不到,那我就给你们设置个场景。
假设我们把一个c文件比作是一个人,那么c文件中的变量就是我们身体的器官。
像手啊,脚啊,这种类型的器官暴露在外面倒是没什么,甚至让人摸两下也没什么大问题。
可是像我们的心脏这类器官能够暴露在外面么?哪天随便来个人跟我们说,让我们把心脏给ta看看,摸两下,你说这让不让人害怕?
所以基于安全等各方面的因素,心脏这类的器官必须藏起来,不能虽然让人触碰。
人生在世,谁还没有点小秘密了?c文件也是一样的啊,总得有点自己**吧?
所以说啊,如果我们让一个全局变量只能在当前c文件,也就是声明这个变量的c文件中能够使用,就用static关键字修饰它。
一旦一个全局变量被static关键字修饰,那么其它的c文件就不能在使用exteal关键字获取了。
换句话说,被static修饰的全局变量就在其它c文件面前消失了,这个就是static的隐身功能。
有一点要注意啊,刚刚说的内容都是针对的全局变量,如果是局部变量根本就不存在这个问题。
」
我和小弦子若有所得,就连旁听的六叔叔居然都露出一副「原来如此」的表情。
「static除了能够修饰全局变量,还可以修饰函数哦。
同样的道理,如果一个函数被static修饰了,那么这个函数也就只能在定义它的c文件中使用了。
对于函数而言,如果要在其它的c文件中调用它就不能靠exteal关键字了,而是要靠头文件,也就是h文件。
还记得我们每一个程序都要写的#include么?stdioh就是一个头文件。
好了,光说不练假把式,那接下来我就用代码给你们演示一遍。
假设我们有一个专门对圆进行计算的功能模块,于是定义一个circlec,内容如下:
doublepi=31415926;
doublecirclemianji(doubler)
{
...
你说这靠谱不靠谱!堂堂大清朝的王府小姐竟然在脱得光溜溜的洞房花烛夜的交融瞬间穿越到了二十一世纪!更可悲的是,她的落脚地竟然是一个有着裸睡习惯的花花总裁的床上。而当时这个花花总裁正好从浴室里出来,从小被封建礼数所约束的她,怎能忍受这样被人偷窥的尴尬,抬脚就对他拉开了攻势,趁着黑暗对他飞起一脚。大胆狂徒!竟敢偷看本小姐的洞房花烛夜,还不拿命来?他边对她使着狗刨沙的功夫,边口出狂言回...
大宋教书匠紧急通知现代教书匠纵横大宋王朝捭阖学术之巅。...
背负血海深仇的神秘少年获得外星传承,带着一身出神入化的魔术踏入大都市,开始他的神奇之旅,替冰冷女总裁化解危机,透视,精神控制,赌石,赛车,泡美眉,无所不能,样样精通。他的魔术脱离了魔术的范畴,让你赏心悦目,让你疯狂,如痴如醉,这是魔术,还是异能?...
随着灵气的复苏,原本三分大陆七分海洋的蓝水星变成了一片沙漠。在沙漠中有种神奇的宝物叫做软木塞,只要找到它,把它拔掉,便能长出一片绿洲!新世纪九十九年,这是蓝星上灵气复苏之后的第一百个年头!一名被流放到南沙海的少年,在这里拔掉了属于自己的第一个软木塞,拥有了属于自己的一片绿洲。...
一场惊天重生,他回想起前世之屈,百宗陷害,陨于万兽潮。今生归来,前无古人,后无来者,他杀蛮兽,屠百宗与百族,前世天下皆负他,如今却他只能只手遮天,扭转乾坤,雪洗前世之屈。...