新课件12.C语言关键字及位处理.PPTVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内存分配的方式 从静态存储区域分配: (1) 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。 动态存储区: (1)在栈上创建。函数内局部变量的存储单元都可以在栈上创建效率很高,但是分配的内存容量有限。 (2)从堆上分配,亦称动态内存分配。动态内存的使用非常灵活,但问题也最多。 内存分配的方式 2.5.3动态内存分配和释放 void *malloc(size_t size); 允许从空闲内存池中分配连续内存; size参数是一个所需字节数的整数; 返回一个指向void 类型的指针,在使用时要根据需要做强制类型转换. void free(void *pointer); 若*pointer所指的内存已经被释放,或未知的内存地址,则调用free可能产生未知结果. 若*pointer是NULL,则free( )不会起任何作用 malloc(例) free()(例) 2.7.3.2 用什么办法才能找出程序中的错误 先调试程序中较小的组成部分,然后调试较大的组成部分 彻底调试好程序的一个组成部分后,再调试下一个组成部分 连续地观察程序流(flow)和数据的变化 始终打开编译程序警告选项 并试图消除所有警告 准确地缩小存在错误的范围 2.7.3.3 如何从一开始就避免错误 程序中应有足够的注释 函数应当简洁 程序流应该清晰,避免使用goto语句和其它跳转语句 函数名和变量名应具有描述性 2.7.4 能报告条件失败的程序 assert()命令 打印失败条件的内容; 打印发生错误的行号; 打印错误所在的源文件名; 使程序以出错状态结束。 NDEBUG宏定义 2.7.4 能报告条件失败的程序 assert()例子 foo() { char * buffer; buffer = malloc( 10000 ); assert ( buffer |= NULL ); } float IntFrac(int Num, int Denom ) { assert( Denom ! = 0 ) ; return ( ( float ) Num ) / ( ( float ) Denom ); } 阶段小节 C语言常见的错误 如何调试一个死循环程序 调试程序有哪些最好的方法 怎么实现输出调试错误报告 本章总结 主要讲述数据指针、函数指针和动态内存申请细节 了解const,typedef,define以及static,enum之间的区别和应用 重点讲述static关键字的应用以及类型转换的特点 讲述C语言编译中常见错误分析 了解C语言调试的细节 指针特性 C语言编程实践 C语言常犯错误 C语言关键词 C语言编程调试 C语言编程要点 位段 位运算 了解位运算的基本操作,重点在与和或运算 了解位段的基本定义 实验2 题目 从键盘上输入1 个正整数给int 变量num,按二进制位输出该数 ,同时分别对第五位取反,第六位置一,第七位清零 注意事项 键盘输入操作特点 位操作的运算 用宏定义实现位操作 CLEAR SETTING REVER 实验结果 熟悉位操作基本运算,同时为以后嵌入式数据操作提供基础程序编码。 静态存储区 只读数据区( RO) 已初始化读写数据区( RW) 低地址 高地址 未初始化读写数据区( BSS) 堆内存的分配方式 栈内存的分配方式 堆内存 栈内存 #include stdio.h #include malloc.h void main() { int *p,n,i,j,temp; printf(\n Enter number of elements in the array: ); scanf(%d,n); p=(int*)malloc(n*sizeof(int)); for(i=0;in;++i) { printf(\n Enter element no. %d: ,i+1); scanf(%d,p+i); } for(i=0;in-1;++i) for(j=i+1;jn;++j) if(*(p+i)*(p+j)) { temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } for(i=0;in;++i) printf(%d\n,*(p+i)); } #include stdio.h #include stdlib.h void main() { int number,i;

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档