还剩27页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
C语言程序设计第6章课件•第六章概述目录•数组CONTENTS•字符串•指针•动态内存分配•程序调试与优化01CHAPTER第六章概述章节目标01020304能够进行文件的读写操了解文件操作中的错误掌握C语言中的文件操作理解文件I/O的基本概念作处理章节内容概览文件的基本概念和分类C语言中的文件操作函数文件的打开、关闭、读取文件的定位和随机访问和写入02CHAPTER数组数组的基本概念数组是一种数据结构,数组的大小在声明时用于存储具有相同数确定,并且在整个程据类型的一组有序数序中保持不变据数组中的每个元素通过索引来访问,索引从0开始一维数组一维数组是具有一个维度(行或一维数组的声明和初始化可以通一维数组可以用于存储相同类型列)的数组过指定数组大小和元素类型来完的数据集合,例如学生的成绩、成商品价格等二维数组01020304二维数组是具有两个维度(行二维数组可以看作是多个一维二维数组的声明和初始化需要二维数组常用于表示表格、矩和列)的数组数组的集合,每个一维数组称指定行数和列数,以及元素类阵等数据结构为一个子数组型多维数组多维数组是指具有三个或更多维度的多维数组可以看作是多个二维数组的数组集合,每个二维数组称为一个子数组多维数组的声明和初始化需要指定每多维数组常用于表示更复杂的数据结个维度的长度,以及元素类型构,例如矩阵、三维空间中的点等03CHAPTER字符串字符串的基本概念0102字符串是由字符组成的序列字符串在C语言中表示为字符数组字符串的长度是指字符串中字符字符串的结束标志是0的数量,不包括终止符00304字符串的存储和表示字符串通常存储在字符数字符串可以使用双引号括组中起来表示A BC D字符数组的大小至少应比字符串常量存储在静态存字符串长度多一个,以容储区,生命周期为整个程纳终止符0序运行期间字符串的输入和0103使用scanf函数可以输入字符串使用gets函数可以输入一个字符串,直到遇到换行符或EOF0204使用printf函数可以输出字符串使用puts函数可以输出一个字符串,并在结尾添加一个换行符4102字符串的处理函数strlen函数返回字符串的长度strcpy函数复制一个字符串到另一个字符串strcat函数连接两个字符串strcmp函数比较两个字符串是否相等04CHAPTER指针指针的基本概念使用指针可以间接访问存储在内存中指针是一种变量,用于存储内存地址的数据指针变量可以存储其他变量的地址或数组元素的地址指针的运算010203指针的算术运算指针的比较运算指针的赋值运算指针可以与整数进行加、比较两个指针的大小关系,将一个指针的值赋给另一减运算,用于移动指针的判断它们指向的内存地址个指针,使两个指针指向位置是否相等或大小关系同一块内存区域指针与数组通过指针访问数组元素通过将数组名转换为指向数组首元素的指针,可以方便地访问数组元素指针与二维数组二维数组可以看作是多个一维数组的集合,通过指针可以方便地操作二维数组动态分配数组使用指针和内存分配函数(如malloc)可以动态地分配内存空间给数组指针与字符串字符串的表示使用字符数组和字符指针可以表示字符串字符指针可以指向字符串的首字符,通过移动指针可以访问字符串中的每个字符字符串函数C语言标准库中提供了许多用于操作字符串的函数,如strcpy、strcat、strlen等,这些函数通常使用指针作为参数来操作字符串05CHAPTER动态内存分配内存分配的方式静态内存分配在程序编译时分配,直到程序结束时才释放动态内存分配在程序运行时根据需要分配,通过手动或自动方式释放动态内存分配函数malloc callocrealloc用于分配指定字节数的内用于分配指定数量和大小用于调整已分配内存的大存空间的内存空间,并初始化为小零内存释放函数free用于释放之前通过`malloc`、`calloc`或`realloc`分配的内存空间dispose在某些系统上用于释放内存,但并非标准C函数06CHAPTER程序调试与优化常见的程序错误类型语法错误由于编写代码时违反了语法规则而导致的错误,如括号不匹配、缺少分号等逻辑错误程序在执行过程中由于逻辑不正确而产生的错误,如条件语句的判断条件不正确、循环语句的终止条件不正确等运行时错误程序在运行过程中遇到无法处理的异常情况而产生的错误,如数组越界、除数为零等输入输出错误程序在输入输出过程中由于格式不正确或设备故障而产生的错误,如文件读写错误、屏幕输出错误等调试工具的使用调试器日志记录使用调试器可以单步执行程序,查看变量的值,在程序中添加日志记录语句,将程序的运行情况设置断点等,以便找出程序中的错误常见的调记录到日志文件中,以便分析和排查问题试器有GDB和Visual StudioDebugger等单元测试静态代码分析工具编写单元测试用例,对程序的各个模块进行测试,使用静态代码分析工具可以检查代码中的潜在问确保每个模块都能正常工作题,如代码风格、潜在的内存泄漏等常见的静态代码分析工具包括Clang StaticAnalyzer和PVS-Studio等代码优化技巧030102减少函数调用04算法优化数据结构优化循环优化过多的函数调用会增加程序的开选择更高效的算法可以显著提销,可以通过减少函数调用次数高程序的性能常见的算法优化技巧包括使用快速排序代替选择合适的数据结构可以减少来提高程序的效率例如,可以循环是程序中最常见的操作之一,冒泡排序、使用二分查找代替程序的复杂度和提高程序的效将一些简单的计算直接写在需要通过优化循环可以提高程序的效线性查找等率例如,使用哈希表代替链使用结果的地方,而不是通过函率常见的循环优化技巧包括使表进行查找操作、使用平衡二数调用来实现用循环展开、减少循环次数、使叉树代替普通二叉树进行插入用迭代代替递归等和删除操作等THANKS谢谢。