你好,我是课程编辑小新。现在还是国庆假期,先祝你假期快乐!
到现在为止,课程已经更新过半,不知道你的学习进度如何了?是不是还在和前面某节课相互“battle”,或者定了个计划,预备先梳理完前置知识再来学习课程,但忙着忙着就忘了……悠闲的假期,正是你沉下心深度学习,跟上大部队节奏的好机会。
我和LMOS老师商量之后,特意策划了三期加餐内容,作为国庆的特别策划。今天是第一期,我们先做做题,检验一下自己的学习成果,查漏补缺;第二期我会邀请两位课代表分享分享他们的学习方法、经验;第三期我们再公布今天主观题的参考答案。
接下来,就让我们进入知识挑战赛这个环节吧!点击下面的按钮即可挑战客观题,一共10道题目,5道单选题,5道多选题,满分100分,系统自动评分。
接下来是两道主观题,请听题。
在前面课程里,我们一起揭秘了C语言编译器的“搬砖”日常,搞清楚了C语言会如何处理各种类型变量、各种运算符、流程控制以及由它们组成的函数,并把这些内容加以转换,对应到机器指令。你知道在这个转换过程中,C编译器为了提高程序的执行性能,会有哪些额外的操作呢?试试概括一下这些操作?
在[堆与栈的区别和应用]这节课中,我们知道了堆与栈区别。同时,我们也清楚了C语言的函数的局部变量和返回地址都保存在栈中,如果有人对这栈中数据破坏就会导致安全隐患,例如改写返回地址,使之指向别的恶意程序。那问题来了,请问我们有什么栈保护机制么,可以用你的语言描述一下么?
期待你的回答,我们下节课见!