网站大量收购闲置独家精品文档,联系QQ:2885784924

嵌入式系统C语言编程基础.pptVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Quiz12AnswerPage*ISR不能返回值;1不能向ISR传递参数;2ISR应该是短而有效率的,因而在ISR中做浮点运算、使用printf等是不明智的,会经常有重入和性能上的问题。3还是先复习一下C吧!C语言复习Page*循环与分支作用域与存储类内存与指针位操作预编译处理循环与分支Page*1几种循环语句:2for(initialize;test;update){body;}3while(test){body;}4do{body;}while(test);5循环辅助手段:6break语句用于跳出循环,continue语句用于结束本次循环。循环与分支Page*….if(expression1){….}if(expression){….}else{….}elseif(expression){….}三种形式的if语句:if(expression){….}else{….}循环与分支Page*条件运算符?:expression1?expression2:expression3如果expression1为真,整个表达式的值为expression2的值,否则为expression3的值;是if….else….的简写形式,但是编译器可以产生比if….else….更优化的代码。循环与分支Page*5)多重选择:switch

switch(expression){

caseconstant1:statements;break; caseconstant2:statements;break;

….

default:statements;break;

}

switch判断表达式必须具有整数值,case标签必须是整数常量或整数常量表达式。C语言复习Page*循环与分支01作用域与存储类02内存与指针03位操作04预编译处理05作用域与存储类Page*作用域代码块作用域(局部变量)

代码块:包含在开始花括号和对应结束花括号之内的一段代码。

作用域:从定义变量位置到该代码块的末尾。文件作用域(全局变量)

在所有函数之外定义的变量具有文件作用域。

作用域:从定义变量位置到包含该定义的文件的结尾处。在其它位置使用该变量应用extern来声明该变量。作用域与存储类Page*存储时期静态存储时期:程序运行期间一直存在,给变量分配固定的存储空间;所有全局变量具有静态存储时期(具有静态存储时期的并不都是全局变量),但是修饰全局变量的关键词static表明的是链接类型,并非存储时期。动态(自动)存储时期:运行期间根据需要动态的给变量分配存储空间。作用域与存储类3)5种存储类存储类存储时期作用域链接声明方式自动自动代码块空代码块内寄存器自动代码块空代码块内,使用关键字register外部静态静态文件外部所有函数之外内部静态静态文件内部所有函数之外,使用关键字static代码块静态静态代码块空代码块内,使用关键字staticC语言复习Page*循环与分支作用域与存储类内存与指针位操作预编译处理内存与指针Page*1内存分配方式2从静态存储区分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量;3从栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限;4动态内存分配。程序在运行的时候由程序员自己负责申请和释放内存。内存与指针Page*内存陷阱C语言的灵活性,指针的应用,以及C语法的宽容性很容易造成代码的错误,这其中最主要的就是内存单元的溢出。

堆栈溢出

数组越界

….将错误锁定在一个函数中以后,首先应该关注内存的问题。两个重大问题:内存与指针Page*临时变量在堆栈上创建,太大的临时变量数组会冲掉堆栈;

返回堆栈中的地址是没有意义的,因为堆栈中的内容永远是不确定的。举例,看看下面这段代码有什么问题

char*DoSomething()

{

chari[32*1024];

….

returni;

}内存与指针Page*数组越界的危险临时数组:在栈上创建,因此临时数组越界有可能导致某些局部变量莫明其妙被改,函数返回时崩溃等等;全局数组:在静态存储区创建,因此全局数据越界有可能导致某些全局变量莫明其妙被改,被冲的动态内存无法释放等等。内存与指针Page*指

文档评论(0)

zhang1745 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档