手机浏览器扫描二维码访问
这电脑都快买了20年了,运行的速度依然还是很快的,唯一的问题就是电池一点都不耐用了。
一切准备就绪后,老爹把他电脑屏幕投放在了投影仪上。
「上一周我们先聊了函数,知道了什么是函数,为什么要用函数以及如何使用函数,接下来又说到了变量的作用域、全局变量和局部变量。
最后说到关键字static能够帮局部变量逆天改命,让局部变量成为与天地同寿的存在,小弦子提出疑问,static是如何做到的,于是就引出了c语言的程序运行时在内存中分区。
c语言的程序运行时在内存中的分区按照内存地址从低到高一共分为:代码区、常量区、全局数据局、堆区、栈区,其中代码区和常量区已经介绍过了。
代码区存放的编译成机器语言的程序代码,cpu在执行程序的时候,会挨着挨着读取、执行,最后在程序结束的时候由系统释放。
常量区存放的是数字、字符、字符串等常量。
至于什么常量,我们也用100块买薯片的例子来说明了。
这里要补充一点,有个神奇的关键字能够将一个变量变成一个常量,它就是const,如果一个变量在声明时被const修饰,那么这个变量就摇身一变,变成了一个常量。
这样的变量需要在声明时并对其初始化,一旦初始化完成后,这个变量就和其他常量一样不能再修改了,就像这样:
constintpic_width=50;
intconstpic_width=50;
这两条语句表达的意义都是一样的,都是符合c语言规范的,你们可以选择一种自己喜欢的方式,不过两种方式都要认识,不然以后看到别人用另外一种方式还以为是人家用错了,那就糗大了。
被const修饰的全局变量,也就是全局常量也是放在常量区的。
」
我和小弦子都都尝试了一下,如果声明一个被const修饰的变量不对其进行初始化,编译器会报错。
如果初始化之后又对其进行赋值,依然会报错。
「第三个区:全局数据区,所有被static的变量和全局变量都是放在全局数据区的,这个区也是在程序结束以后由系统释放。
第四个取:堆区,使用这个区就需要我们自己申请使用内存了,并且还必须自己释放。
如果申请了内存不释放,就会导致内存泄露。
假设在一个死循环中不断申请内存并且不释放的话,那计算机秒秒钟就会因为内存耗尽卡死了。
申请内存的函数是malloc,释放是free,都是由库函数提供的。
最后一个区:栈区,所有除static修饰的局部变量都是放在这个区的,包括被const修饰的局部常量。
一旦一个局部变量脱离了作用域,那么系统就会在栈中将它无情的杀死。
而static之所以能够为局部变量逆天改命,就是因为被它修饰后的变量已经从栈区转移到了全局数据区,这个区里的数据要等到程序结束的时才会被释放,都是和天地同寿的存在。
」
「哦哦,原来是这样哦……」
难怪老爹要这么大的力气给我们讲内存分区,原来就是为了这一句话服务。
「static除了有给局部变量逆天改命,它还有另外一个技能——隐身术。
」
...
你说这靠谱不靠谱!堂堂大清朝的王府小姐竟然在脱得光溜溜的洞房花烛夜的交融瞬间穿越到了二十一世纪!更可悲的是,她的落脚地竟然是一个有着裸睡习惯的花花总裁的床上。而当时这个花花总裁正好从浴室里出来,从小被封建礼数所约束的她,怎能忍受这样被人偷窥的尴尬,抬脚就对他拉开了攻势,趁着黑暗对他飞起一脚。大胆狂徒!竟敢偷看本小姐的洞房花烛夜,还不拿命来?他边对她使着狗刨沙的功夫,边口出狂言回...
大宋教书匠紧急通知现代教书匠纵横大宋王朝捭阖学术之巅。...
背负血海深仇的神秘少年获得外星传承,带着一身出神入化的魔术踏入大都市,开始他的神奇之旅,替冰冷女总裁化解危机,透视,精神控制,赌石,赛车,泡美眉,无所不能,样样精通。他的魔术脱离了魔术的范畴,让你赏心悦目,让你疯狂,如痴如醉,这是魔术,还是异能?...
随着灵气的复苏,原本三分大陆七分海洋的蓝水星变成了一片沙漠。在沙漠中有种神奇的宝物叫做软木塞,只要找到它,把它拔掉,便能长出一片绿洲!新世纪九十九年,这是蓝星上灵气复苏之后的第一百个年头!一名被流放到南沙海的少年,在这里拔掉了属于自己的第一个软木塞,拥有了属于自己的一片绿洲。...
一场惊天重生,他回想起前世之屈,百宗陷害,陨于万兽潮。今生归来,前无古人,后无来者,他杀蛮兽,屠百宗与百族,前世天下皆负他,如今却他只能只手遮天,扭转乾坤,雪洗前世之屈。...