笔趣阁

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

第四十一章 逆天改命的秘密(第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除了有给局部变量逆天改命,它还有另外一个技能——隐身术。」

热门小说推荐
重生世家子

重生世家子

原书名重生红三代四九城内,被称为太子党中最窝囊的私生子,聂振邦不堪重负终于自杀了,却重生回到了和父亲相认之前的那一刹那。悲剧是否还会重演?赫赫有名的红三代还能在四九城成为无人不知无人不晓的存在么?家道中落,这一世,聂振邦还会让历史重演吗?私生子也有掌控家族的那一天么?...

七冠王

七冠王

2018年起点第一部足球精品足球冠军系统附体,卢文斌化身冠军收割者。从德乙到德甲,从联盟杯到欧冠,卢文斌就是冠军的保证。他在俱乐部的终极目标,是在英超...

都市绝世仙帝

都市绝世仙帝

绝世仙帝重回都市,身怀无上医经绝世仙典。财富?地位?美人?这些不过是袖手可得的浮云罢了。这一世,唐昊志在仙道,步步登天,弹指碎青云!...

君临天下(陈毅沈悦然)

君临天下(陈毅沈悦然)

西方黑暗世界十二君王之一,暴君大人,一手创立的君王殿,傲立于西方黑暗世界,谁人听到暴君二字不闻风丧胆,却甘愿为了一个女人,放弃唾手可得的天下...

台湾娱乐1971

台湾娱乐1971

林清霞我们很早就认识啦,高中的学校有在一条街上!邓丽君梓钧是我见过最有音乐天赋的人。古龙小王酒量不错。琼瑶我很喜欢他小说中的爱情。倪匡我以为自己一小时写4500字已经很快了,直到认识了王梓钧赵雅芝很感谢他把我带进演艺圈。看了好多写香港的写好莱坞的写韩国的重生小说,我来试试写一下台湾吧。...

异能高手

异能高手

关于异能高手砰!车子撞在周宇的后背上,巨大的力量一下子就将他和那个美女撞飞了出去。轰!!一道四五米粗的闪电击中了尚在空中的两人。白光一闪,两人竟是消失在了那处空间!...

每日热搜小说推荐