还剩27页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
郑莉教授简介郑莉是清华大学电子工程系教授国家杰出青年科学基金获得者在机器学习和信,,息处理等领域做出了重要贡献她的研究成果在国际顶级期刊和会议上发表成,果丰硕计算机发展历程回顾从第一台计算机诞生到如今的人工智能时代,计算机技术经历了一个漫长而令人振奋的发展历程让我们一起回顾这段丰富多彩的历史,探索计算机技术如何推动人类文明的不断进步语言发展历程C1970年代1语言诞生于贝尔实验室C1980年代2语言快速普及并成为主流编程语言C1990年代3语言标准化并推出标准C ANSI C语言由丹尼斯里奇于年在贝尔实验室开发起初作为操作系统的系统编程语言随后语言迅速普及并成为最广泛使用的编程C·1972,UNIX C语言之一直到年标准的推出进一步推动了语言的发展如今语言仍然是嵌入式系统、操作系统、驱动程序等领域的重要,1989ANSIC C C编程语言语言诞生背景C计算机技术的发展B语言的诞生C语言的诞生广泛应用普及世纪年代和年代计在这种背景下贝尔实验室的语言的局限性逐渐显现于是语言凭借其简洁性、高效性205060,,B,C算机技术飞速发展出现了更肯汤普逊和丹尼斯里奇于贝尔实验室的丹尼斯里奇在和可移植性迅速在计算机领,---,加强大和多样化的计算机硬件1972年开发出B语言,为创造C1972年进一步开发出C语言,域广泛普及和应用,成为最常系统随之而来的是对更加高语言奠定了基础使其成为一种更强大、更灵活用的编程语言之一级编程语言的需求的编程语言语言主要特点C高效灵活语言是一种编译型语言可以生语言提供了丰富的语法和灵活C,C成高度优化的机器码执行效率的内存管理功能可以用于编写,,很高各类复杂系统可移植低级编程语言程序可以在不同硬件平台语言在底层硬件和操作系统中C C和操作系统上运行具有很好的广泛使用是一种典型的低级编,,可移植性程语言语言应用领域C操作系统开发嵌入式系统数据库内核语言是构建复杂操作系统的基础如语言广泛应用于单片机和物联网设备的固数据库管理系统的核心组件如存储引擎和C,C,、和等它提供件开发确保硬件设备能够可靠、高效地运查询优化器通常是使用语言开发的以保Windows macOSLinux,,C,了底层系统控制和内存管理的能力行证高性能和可靠性语言基础语法C深入探索语言的基础语法要素包括变量和常量、数据类型、运算符和表达C,式、顺序结构程序设计、分支结构程序设计以及循环结构程序设计掌握这些核心知识是学习语言编程的基础C变量和常量变量定义变量是可以被赋予、修改和读取的数据项它代表存储在内存中的值,在程序运行时可以动态改变变量名称遵循命名规则,如使用有意义的标识符常量定义常量是在程序中不能被改变的值常量可以在程序编译时被定义,也可以在运行时用宏定义常量可以是数值型、字符型或枚举型内存分配变量和常量在内存中占用一定的空间不同数据类型的变量和常量所占据的内存空间大小不同合理的内存管理有助于提高程序的效率和性能数据类型基本类型构造类型语言提供了基本的整型、浮点型语言允许用户自定义数组、结构CC和字符型数据类型满足日常编程体和联合体等复杂数据类型实现,,需求它们具有固定的存储空间更灵活的数据结构和取值范围指针类型指针是语言的核心概念之一用于管理内存中的数据地址支持动态内存分C,,配等高级功能运算符和表达式算术运算符逻辑运算符包括加、减、乘、除、取模等基本运如与、或||、非!等运算符,算符,用于数值计算用于布尔逻辑判断赋值运算符关系运算符如、、等,用于给变量赋值如大于、小于、等于等比=+=-===较运算符顺序结构程序设计顺序执行1程序按照代码编写的顺序逐行执行流程控制2程序执行的逻辑顺序可以通过语句控制效率优化3合理安排语句顺序可以提高程序运行效率在顺序结构程序设计中代码被逐行顺序执行程序员可以通过语句控制语句的执行顺序从而实现特定的功能和逻辑通过优化语句顺序,,,,程序可以更有效地运行提高整体性能,分支结构程序设计条件判断嵌套结构使用if-else语句根据条件做出相应的选择和决策,实现不同路径的程序执行可以在分支语句内部嵌套其他分支语句,实现更复杂的决策逻辑123多重选择使用switch-case语句可以根据多个条件做出更精细的选择和判断循环结构程序设计for循环使用固定次数的循环,用于计数和循环指定次数的任务while循环只要满足条件就一直执行的循环,适用于不确定循环次数的情况do-while循环先执行一次循环体,然后再判断条件是否满足的循环确保循环体至少执行一次嵌套循环在循环中嵌套其他循环,可以用于处理复杂的数据结构或多重条件语言函数C函数是语言中最基本的编程单元它能够封装代码逻辑提高程序的复用性和C,可读性本章将深入探讨函数的定义、调用、参数传递、局部变量与全局变量,以及递归函数等概念函数的定义和调用函数的定义函数的调用函数的返回函数是一段完整的程序代码,用于执行特定函数调用时,控制权会转移到被调用的函数函数可以返回一个值或不返回任何值返回的任务它由返回类型、函数名称、参数列中执行调用函数时需要传递实参与形参相值通过return语句返回给调用函数表和函数体组成匹配函数参数传递值传递地址传递12在调用函数时将实参值复制给将实参的地址传递给形参函数,,形参,形参的变化不会影响实内部可以直接操作实参的内存参这样可以保护函数内部的空间这样可以实现函数返回数据多个值数组传递指针传递34将数组名作为实参传递给形参将指针作为实参传递给形参函,,形参可以直接访问和修改数组数内部可以间接访问和修改指元素这样可以提高函数的灵针所指向的内存空间这样可活性以更好地控制内存局部变量和全局变量局部变量全局变量访问范围内存分配局部变量是在函数内部定义的全局变量是在函数外部定义的局部变量只能在定义它的函数局部变量存储在栈内存中,全变量,只在当前函数内部有变量,在整个程序中都可以访内使用,而全局变量可以在整局变量存储在静态内存区这效它们在函数被调用时创问和修改它们在程序运行期个程序中任意位置访问影响了它们的生命周期和访问建,函数执行完毕后就会被销间始终存在速度毁递归函数自我调用问题分解递归函数能够自我调用,通过这种递归函数擅长将复杂问题分解为方式重复执行特定的算法或操作更小的子问题逐步解决最终得出,,,直到满足某种停止条件结果效率提升对于某些问题递归函数能提供更高效的解决方案如计算阶乘、斐波那契数,,列等指针的基本概念指针是语言中一个非常重要的概念它可以直接访问内存地址提高程序的灵C,活性和效率通过掌握指针的基本用法我们可以更好地理解和使用语言的核,C心特性指针的基本概念指针的定义指针声明指针赋值指针是一种特殊的变量,用于存储另一个变声明指针变量时需要使用指针类型,如int*通过赋值运算符可以将一个变量的地址赋给量的内存地址它让程序可以间接操作内存p表示p是一个指向整型变量的指针指针,如p=x将把变量x的地址赋给指中的数据针p指针与数组数组与指针的关系数组是一组连续的内存单元,而指针是一个保存内存地址的变量数组名是一个指向数组第一个元素的指针指针运算可以对指针进行加减运算,以访问数组中的其他元素每次加减的单位是所指向类型的字节数指针数组指针也可以存储在数组中,形成指针数组这种方式常用于处理字符串数组或函数指针数组动态内存分配动态内存分配的需求动态内存分配的方式动态内存分配的优势动态内存分配的风险在程序运行时,需要根据实际C语言中,可以使用malloc动态内存分配可以根据需求灵如果管理不当,动态内存分配情况动态分配和释放内存空和free函数动态分配和释放活分配所需空间,避免内存的可能导致内存泄漏和悬空指针间以应对不同大小和数量的内存函数则可以初浪费或溢出提高程序的效率等问题需要程序员小心操,calloc,,数据这种灵活性是静态内存始化分配的内存空间和健壮性作无法提供的指针与函数指针参数传递函数返回指针12在语言中可以使用指针作为函数可以返回指针类型指向动C,,函数的参数,实现数据的间接访态分配的内存空间或者静态存问和修改这种传值调用的方储区域,使用时需谨慎避免内存式更加灵活和高效泄漏指针数组回调函数34通过创建指针数组,可以灵活地把一个函数作为参数传递给另管理多个指针变量增强程序的一个函数在特定事件发生时调,,扩展性和通用性用,是指针在函数中的高级用法指针与函数指针可以用来作为函数的参数和返回值实现更灵活和高效的编程通过指针函,,数能够直接操作和访问外部变量提供了丰富的功能性,结构体定义和使用结构体概念结构体声明结构体是语言中的一种复合数据使用关键字定义一个新的C struct类型,允许开发者定义包含不同结构体数据类型,包含成员变量数据类型的变量集合和成员函数结构体初始化结构体访问通过逐个赋值或使用花括号一次使用成员访问运算符.来访问性初始化结构体变量的各个成结构体中的成员变量和成员函员数结构体数组定义结构体数组初始化结构体数组12可以使用结构体类型声明一个数组变量,每个元素都是一个可以使用花括号逐个初始化数组中的每个结构体元素完整的结构体访问结构体数组元素结构体数组应用34通过下标访问数组中的每个结构体元素,再使用点运算符访适用于处理大量相同类型的结构体数据,如学生信息管理、问元素中的成员商品信息管理等结构体指针灵活操作结构体指针的优势指针访问结构体通过使用结构体指针,可以动态地分配和访结构体指针可以简化复杂的结构体操作,减通过结构体指针,可以直接访问结构体成问结构体内存,提高代码的灵活性和效率少不必要的内存复制,提高程序性能员,并进行增删改查等操作联合体定义和使用结构体和联合体内存共享灵活性联合体是一种特殊的数据类型它允许在同联合体中的所有成员共享同一块内存空间联合体提供了灵活的数据存储和访问方式,,,一内存空间存储不同类型的数据这使得可以节省内存资源适用于许多不同的应用场景课程总结通过本次课程的学习我们全面掌握了语言的基础知识和编程技能从历史发,C展、基本语法、函数、指针、结构体等多个方面深入学习为我们今后的语言,C编程打下了坚实的基础。
个人认证
优秀文档
获得点赞 0