还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《语言》清华大学课件C本课件由清华大学计算机系提供,旨在帮助学生掌握C语言的基本概念和语法,并培养编程能力课程介绍授课地点课程目标课程教材本课程由清华大学计算机系资深教授授课,帮助学生掌握C语言编程基础知识,培养编采用经典教材《C语言程序设计》,内容全地点位于清华大学主楼,历史悠久,环境优程思维,为后续学习其他编程语言打下坚实面,讲解细致,适合初学者学习美基础语言历史与发展C起源1贝尔实验室,肯·汤普森发展2丹尼斯·里奇,UNIX操作系统标准化3ANSI C,ISO C影响4广泛应用,编程语言基础C语言起源于贝尔实验室,由肯·汤普森于1972年开发,作为UNIX操作系统的编程语言C语言在丹尼斯·里奇的领导下进一步发展,成为广泛使用的通用编程语言C语言的标准化由ANSI(美国国家标准协会)和ISO(国际标准化组织)共同进行,以确保语言的统一性和可移植性C语言对计算机编程领域产生了深远的影响,它被广泛应用于各种系统和应用软件开发,成为许多其他编程语言的基础语言编程环境搭建CC语言编程环境搭建是学习C语言的第一步,需要选择合适的编译器和集成开发环境(IDE)选择编译器1常见的编译器包括GCC、Clang、Microsoft VisualC++等,可以根据个人偏好和项目需求进行选择安装IDE2IDE提供了代码编辑、调试、编译等功能,常用的IDE包括Code::Blocks、Visual StudioCode、Dev-C++等配置环境变量3将编译器和IDE的路径添加到系统环境变量中,方便在命令行或终端中调用编写第一个C程序4编写一个简单的C程序,例如“Hello World”,并尝试编译运行,验证环境是否配置成功基本语法结构关键字标识符C语言中,关键字是预留的标识符,具有特殊含标识符是由字母、数字和下划线组成的符号序义,不能用作变量名、函数名或其他标识符列,用于标识变量、函数、结构体等运算符注释运算符用于执行各种运算,例如算术运算、关注释用于解释代码,提高代码可读性,提高代系运算、逻辑运算等码可维护性数据类型基本数据类型枚举类型•整型(int)使用枚举类型可以为一组常量定义名称•字符型(char)•浮点型(float,double)结构体共用体结构体可以将不同类型的数据组共用体允许多个成员共享相同的织在一起,形成自定义的数据类内存空间,可以节省内存型变量与常量
11.变量
22.变量命名变量是内存中存储数据的容器,使用前需要声明变量名必须以字母或下划线开头,后面可以跟字母、数字或下划线
33.常量
44.常量声明常量是在程序运行期间值不会改变的数据使用关键字const声明常量,例如const intMAX_VALUE=100输入输出函数标准输入函数标准输出函数例如,scanf函数用于从标准输入流(通例如,printf函数用于将格式化的数据输常是键盘)读取用户输入的数据出到标准输出流(通常是显示器)使用格式控制符来指定输入数据的类型和可以使用格式控制符来控制输出数据的格格式式和样式表达式与运算符算术运算符关系运算符•加法+•大于•减法-•小于•乘法*•大于等于=•除法/•小于等于=•取模%•等于==•不等于!=逻辑运算符赋值运算符•逻辑与•简单赋值=•逻辑或||•加等于+=•逻辑非!•减等于-=•乘等于*=•除等于/=•取模等于%=条件语句if-else条件判断1if语句用于根据条件判断执行不同的代码块,可以有效控制程序流程分支结构2else语句用于在if条件不满足时执行另一段代码,提供额外的代码分支嵌套结构3if-else语句可以嵌套使用,创建更加复杂的逻辑判断结构,满足更复杂的业务需求循环语句for,while,do-whilefor循环for循环适合执行已知次数的循环操作,例如遍历数组或执行固定次数的计算while循环while循环适合执行未知次数的循环操作,例如等待用户输入或处理数据流do-while循环do-while循环至少执行一次循环体,然后根据条件判断是否继续执行数组连续内存分配相同数据类型12数组元素存储在连续的内存位数组中所有元素必须是相同数置,方便访问和处理据类型,例如int、char、float等索引访问多维数组34通过索引值访问数组元素,例二维数组或多维数组可以存储如array
[0]访问第一个元素表格或矩阵等结构函数定义与声明调用与返回值函数定义包含函数名、参数列表和函数体函数声明仅指定函数通过函数名和实际参数调用函数,函数执行完后返回一个值函的返回值类型、函数名和参数列表,用于告知编译器函数的存在数可以没有返回值,此时返回类型为void函数递归定义1函数调用自身机制2栈帧保存参数应用3阶乘计算注意点4终止条件函数递归是指一个函数调用自身,形成循环调用递归机制利用栈帧保存参数和局部变量,以便在递归调用结束后恢复执行状态递归函数通常用于解决一些具有自相似性质的问题,比如计算阶乘指针内存地址间接访问指针变量存储着内存地址,指向通过指针,可以间接访问内存中内存中特定的数据位置的数据,修改其内容灵活操作安全性指针允许动态分配内存,提高代指针操作需要谨慎,错误使用可码效率,实现复杂数据结构能会导致程序崩溃或数据损坏动态内存分配内存管理堆内存函数动态内存分配允许程序在运行时请求和释放动态内存分配通常从堆内存中分配内存堆C语言提供了一组函数用于动态内存分配,内存程序员可以根据需要分配和释放内存是一个大的内存区域,用于存储动态分配的例如malloc、calloc、realloc和free,而不是在编译时固定分配所有内存内存结构体定义使用结构体是一种用户自定义的数据类型,它结构体可以用于组织相关的数据,并通过允许将不同类型的数据组合在一起一个结构体变量来访问这些数据结构体可以用来表示现实世界中的对象,例如,可以使用一个学生结构体来存储学例如学生、商品等生的姓名、学号、成绩等信息共用体内存共享共用体成员共享同一内存空间,不同成员的值会相互覆盖数据类型转换共用体可以方便地将不同数据类型的值存储在同一内存位置内存优化共用体可节省内存空间,适用于存储多个数据类型但只需要其中一个的值的情况枚举类型
11.定义枚举类型
22.枚举常量使用enum关键字定义枚举类枚举常量是符号常量,具有整型,并指定枚举常量型值,默认从0开始
33.使用枚举类型
44.优点枚举类型提高代码可读性和可提高代码可读性、易于维护、维护性,便于管理相关常量提高代码安全性、方便代码移植位运算位运算操作应用场景数据结构C语言提供了一组位运算符,用于对数据进位运算常用于优化算法、处理数据格式、控位运算可以高效地处理数据结构,例如集行位级别的操作,例如按位与()、按制硬件设备、加密解密等场景合、二进制树、哈希表等位或(|)、按位异或(^)、按位取反(~)、左移()和右移()文件操作文件打开与关闭文件读写文件操作需要先打开文件,然后可以从文件读取数据,也可以将进行读写操作,最后关闭文件数据写入文件不同的读写模式对应不同的操作文件定位文件错误处理可以将文件指针移动到指定位置在文件操作过程中,可能出现错,以便在文件中的特定位置进行误,需要进行错误处理,确保程读写操作序的稳定性预处理指令作用语法类型示例在编译之前对源代码进行处理以#开头,例如#include、常见的预处理指令包括文件例如#include,用来包含标,进行宏定义、文件包含、条#define、#ifdef包含、宏定义、条件编译、错准输入输出库文件件编译等操作误信息输出等编译与链接过程预处理1处理宏定义、包含头文件等编译2将C代码转换为汇编代码汇编3将汇编代码转换为机器码链接4将目标文件与库文件链接成可执行文件编译过程将源代码转换为可执行文件,包含四个主要步骤调试技巧代码断点单步调试日志记录调试工具设置断点,暂停程序执行,检逐行执行代码,观察程序运行记录程序运行过程中的关键信使用调试工具,如GDB,查变量的值和程序状态流程,定位错误代码息,帮助分析程序执行轨迹Visual Studio调试器,可以更方便地调试程序常见算法与数据结构树链表排序算法图树状数据结构用于表示层次关链表是一种线性数据结构,由排序算法用于将数据按照特定图是一种非线性数据结构,由系,例如文件系统或组织结构节点组成,每个节点包含数据顺序排列,例如从小到大或从节点和边组成,用于表示关系和指向下一个节点的指针大到小网络面向对象编程思想封装继承多态将数据和操作数据的方法封装在一起,子类继承父类的属性和方法,实现代码相同的方法名,在不同的类中具有不同隐藏内部实现细节,提高代码的可维护复用,提高代码可扩展性的实现,实现代码的灵活性和可扩展性性移植与跨平台跨平台开发平台差异12C语言是跨平台的编程语言,不同的操作系统,例如程序可以在不同的操作系统上Windows、Linux、MacOS,编译和运行具有不同的底层架构和API移植策略跨平台库34为了使C语言程序在不同平台使用跨平台库,例如Qt、上正常运行,需要进行移植,wxWidgets,可以简化移植过例如修改代码以适应平台差异程新特性C11通用性增强性能优化C11标准增强了语言的通用性,引入了一些新的特性,如泛型编程C11标准引入了新的内存对齐和类型对齐机制,以及对编译器优化,支持可变参数宏等,使其更适用于各种应用场景方面的改进,提高了代码的效率和执行速度编码规范与最佳实践代码风格一致团队协作代码审查单元测试规范代码缩进、命名和注释,遵循统一的代码风格,方便团定期进行代码审查,发现潜在编写单元测试用例,保证代码提高代码可读性和可维护性队成员理解和维护代码问题,提高代码质量逻辑的正确性和可靠性课程总结与展望回顾课程内容,从基础语法到高级特性,全面掌握C语言编程技能展望未来,C语言将继续发挥重要作用,在嵌入式系统、操作系统等领域保持核心地位。
个人认证
优秀文档
获得点赞 0