88读书网

手机浏览器扫描二维码访问

第四十一章 逆天改命的秘密(第2页)

一切准备就绪后,老爹把他电脑屏幕投放在了投影仪上。

「上一周我们先聊了函数,知道了什么是函数,为什么要用函数以及如何使用函数,接下来又说到了变量的作用域、全局变量和局部变量。

最后说到关键字static能够帮局部变量逆天改命,让局部变量成为与天地同寿的存在,小弦子提出疑问,static是如何做到的,于是就引出了c语言的程序运行时在内存中分区。

c语言的程序运行时在内存中的分区按照内存地址从低到高一共分为:代码区、常量区、全局数据局、堆区、栈区,其中代码区和常量区已经介绍过了。

代码区存放的编译成机器语言的程序代码,cpu在执行程序的时候,会挨着挨着读取、执行,最后在程序结束的时候由系统释放。

常量区存放的是数字、字符、字符串等常量。至于什么常量,我们也用100块买薯片的例子来说明了。

这里要补充一点,有个神奇的关键字能够将一个变量变成一个常量,它就是const,如果一个变量在声明时被const修饰,那么这个变量就摇身一变,变成了一个常量。

这样的变量需要在声明时并对其初始化,一旦初始化完成后,这个变量就和其他常量一样不能再修改了,就像这样:

constintpic_width=50;

intconstpic_width=50;

这两条语句表达的意义都是一样的,都是符合c语言规范的,你们可以选择一种自己喜欢的方式,不过两种方式都要认识,不然以后看到别人用另外一种方式还以为是人家用错了,那就糗大了。

被const修饰的全局变量,也就是全局常量也是放在常量区的。」

我和小弦子都都尝试了一下,如果声明一个被const修饰的变量不对其进行初始化,编译器会报错。如果初始化之后又对其进行赋值,依然会报错。

「第三个区:全局数据区,所有被static的变量和全局变量都是放在全局数据区的,这个区也是在程序结束以后由系统释放。

第四个取:堆区,使用这个区就需要我们自己申请使用内存了,并且还必须自己释放。如果申请了内存不释放,就会导致内存泄露。假设在一个死循环中不断申请内存并且不释放的话,那计算机秒秒钟就会因为内存耗尽卡死了。

申请内存的函数是malloc,释放是free,都是由库函数提供的。

最后一个区:栈区,所有除static修饰的局部变量都是放在这个区的,包括被const修饰的局部常量。一旦一个局部变量脱离了作用域,那么系统就会在栈中将它无情的杀死。

而static之所以能够为局部变量逆天改命,就是因为被它修饰后的变量已经从栈区转移到了全局数据区,这个区里的数据要等到程序结束的时才会被释放,都是和天地同寿的存在。」

「哦哦,原来是这样哦……」

难怪老爹要这么大的力气给我们讲内存分区,原来就是为了这一句话服务。

「static除了有给局部变量逆天改命,它还有另外一个技能——隐身术。」

校园全能马甲女神  四龙攒凤  顾九辞霍明澈  衫生诡  韩娱之聚光  青梅千千结  大佬甜妻宠上天  嗣子荣华路  迟宠  最强豪婿陆凡  上门龙婿陆凡  阴阳眼小师妹  戚风童话  王妃称心  我的蛮荒部落  龙婿陆凡  异界烽火录贰烽云再起  张钟颖  梦灾末世生存指南  夫人的病今天好了吗  

热门小说推荐
闪婚急诊,唐医生!

闪婚急诊,唐医生!

秦晚夏以为她的闪婚老公,除了帅,一无所有!可谁能料到,他竟然是显赫国内外的大名医,上市集团的幕后大老板,还把她宠上了天!恢复记忆之后才知道,她是他藏得最深的珍爱!...

女明星穿越历险记

女明星穿越历险记

这是一本书名老派,但绝不老套的故事!当红女明星穿越遇见顶流俊和尚,高冷太子殿下也来横插一杠本以为自己凭借角色技能,能混个风生水起,却没料到这里世道如此险恶,套路如此之深!喂,那救了我好几次的和尚小哥哥,你得带着我升级打王者啊!还有那高冷BT爱唱戏的太子殿下,说了我不喜欢你,就是不会喜欢上你!!!...

绝世小神农

绝世小神农

夜场服务小妹居然是村里的嫂子,原来她是这样的人…...

每日热搜小说推荐