还剩24页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《C语言补充》PPT课件目录•C语言基础回顾•C语言进阶知识•C语言中的内存管理•C语言中的文件操作•C语言中的常见错误和调试方法01C语言基础回顾数据类型整型浮点型包括int、short、long等,用于存储整数包括float、double等,用于存储小数字符型布尔型用char表示,用于存储单个字符用bool表示,只有true和false两个值运算符01020304算术运算符关系运算符逻辑运算符位运算符包括+、-、*、/等,用于进行包括==、!=、、、=、包括、||、!等,用于组合包括、|、^、~、、数学运算=等,用于比较两个值的大小条件等,用于对二进制位进行操作关系条件语句0102if语句switch语句根据条件判断执行不同的代码块根据不同的值执行不同的代码块循环语句010203for循环while循环do-while循环指定循环次数,重复执行某段代当条件满足时,重复执行某段代先执行一次代码块,然后当条件码码满足时重复执行02C语言进阶知识指针指针的概念指针的解引用指针是一种变量,用于存储内存地使用解引用操作符(*)可以获取指址通过指针可以间接访问内存中针所指向的值的数据指针的声明和初始化指针的算术运算指针变量需要先声明,然后通过赋可以通过加减法对指针进行算术运值操作符将内存地址赋给指针变量算,以实现数组元素的遍历函数指针函数指针的概念函数指针的声明和初始化函数指针是指向函数的指针变量,可以用来函数指针需要先声明,然后通过赋值操作符调用函数将函数的地址赋给函数指针变量函数指针的使用回调函数可以通过函数指针调用函数,并传递参数和回调函数是指通过函数指针调用函数的一种返回值方式,常用于实现事件驱动编程结构体结构体的概念结构体是一种自定义数据类型,可以包含多个不同类型的数据成员结构体的声明和定义结构体需要先声明,然后通过定义操作符({})定义结构体变量结构体的访问可以通过点操作符(.)访问结构体中的数据成员结构体的初始化可以使用初始化列表对结构体进行初始化联合体联合体的概念联合体的访问联合体是一种特殊的数据类型,可以包含多个相只能同时访问联合体中的一个成员,因为它们共同类型的成员享同一块内存空间A BC D联合体的声明和定义联合体的用途联合体需要先声明,然后通过定义操作符({})主要用于节省内存空间,避免数据冗余定义联合体变量枚举枚举的访问枚举的概念可以通过枚举变量访问对应的整数值枚举是一种用户自定义的数据类型,用于表示一组命名的整数值1枚举的用途主要用于为整数值赋予有意枚举的声明和定义义的名称,提高代码的可读性和可维护性枚举需要先声明,然后通过定义操作符({})定义枚举变量03C语言中的内存管理内存分区静态存储区堆区这部分内存主要用来存放全局变量和静这部分内存用于动态内存分配当程序态变量数据在程序开始运行时被创建,运行时,可以使用`malloc`、`calloc`、并在程序运行结束时销毁`realloc`等函数在堆区申请或释放内存栈区代码区这部分内存用于存放函数中的局部变量也称为文本区,用于存放程序的二进制和函数调用的返回地址栈区的内存分代码这部分内存是只读的,以防止程配和释放是自动进行的,由编译器负责序意外修改其代码管理堆和栈的区别分配方式堆是动态分配的,而栈是自动分配的堆需要程序员手动管理,包括分配和释放;而栈由编译器自动内存管理管理理论上,堆的大小不受限制,而栈的大小受限于系统的可用内空间大小存对于局部变量,由于栈的访问速度较快,所以在性能敏感的代访问速度码中,使用局部变量比使用堆内存更高效内存泄漏和野指针内存泄漏野指针如何避免使用智能指针(如C中的`std:unique_ptr`和当动态分配的内存未被释放时,指向已释放内存的指针被称为野`std:shared_ptr`)可以帮助自动管就会发生内存泄漏随着程序运指针试图通过野指针访问或修理内存,减少内存泄漏和野指针的行时间的增长,泄漏的内存会越改数据会导致未定义的行为,可风险在C语言中,使用`free`函数来越多,最终可能导致程序崩溃能是程序崩溃或数据损坏释放内存后,应将指针设置为`NULL`,以避免误用04C语言中的文件操作文件的打开和关闭010203打开文件关闭文件文件指针使用fopen函数打开文件,指使用fclose函数关闭文件,释使用文件指针来标识和操作文定文件名和打开模式放资源件文件的读写操作读取文件写入文件使用fscanf、fgets等函数从文件中读取数据使用fprintf、fputs等函数向文件中写入数据缓冲区操作使用缓冲区来提高文件读写效率文件的定位操作010203定位文件指针获取当前位置随机访问使用fseek函数移动文件指针到指定位使用ftell函数获取当前文件指针的位置使用随机访问方式读取或写入文件中的任置意位置数据05C语言中的常见错误和调试方法常见错误类型语法错误逻辑错误由于代码中存在语法错误,导致编译器无法代码逻辑不正确,导致程序无法按照预期运正确解析代码行运行时错误输入输出错误程序在运行过程中出现异常或错误,如内存程序无法正确读取或写入数据,如文件操作溢出、数组越界等失败、网络通信问题等调试方法使用调试器打印输出通过调试器逐步执行代码,观察变量值和程在关键位置添加打印语句,输出变量的值和序状态,以便找到问题所在程序状态,以便排查问题断点和单步执行日志记录使用调试器的断点和单步执行功能,逐步执将程序的运行过程和关键信息记录到日志文行代码并观察变量值和程序状态件中,以便排查问题代码优化建议使用循环代替嵌套循环使用循环代替嵌套循环可以提高代码可读性和效率减少重复计算将重复计算的结果存储在变量中,避免重复计算使用合适的数据结构和算法选择合适的数据结构和算法可以提高代码效率和可读性避免使用全局变量全局变量会增加代码复杂性和耦合度,应尽量使用局部变量THANKS。