




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言内容提要 总复习 数据类型 基本数据类型整型 2 4字节 int unsignedint long unsignedlong字符型 1字节 char unsignedchar实型 4 8字节 float double构造数据类型数组 一组同类型数据的集合结构 一组不同数据类型的集合指针变量的地址 每种数据类型都有对应的指针类型 字符型数据保存的是字符 a A 0 计算机不能存贮字符 只能用数字代替 ASCII码 a 97 0 48 42对内存中数据的理解取决于数据类型可以理解为字符 a 和 0 可以理解为整型数据 49600 可以理解为实型的一部分 甚至是指令代码 字符型数据类型的本质 类型转换 double float int char 低 高 a 3 字符型 整型整型 a 3 0 字符型 实型实型 45 0 3 整型 实型实型 a 3 0 字符型 实型实型 自动类型转换 不同数据类型进行混合计算时 系统按一定规则进行数据类型转换 强制类型转换 在自动类型转换的基础上 按特殊设定转换 char a 3 字符型 floatfd fd a 3 实型 输入 输出格式符 整型 d ld字符型 c字符串型 s实型 f e左对齐 负号占位 m n例 printf 10 6e x 1 4e 002printf 11 6f data 3 141593 条件分支 一 简单条件分支 if 条件 成立时执行 else 不成立时执行 多重条件分支 if 条件1 成立时执行 elseif 条件2 成立时执行 elseif 条件3 成立时执行 else 所有条件均不成立时执行 条件 分支1 分支2 成立 不成立 条件分支 二 关系表达式 b c if a b c 逻辑表达式 多个关系表达式之间的连接 与 当两个表达式均成立时结果为真 或 两个表达式有一个成立时结果就为真 非 当表达式结果不成立时结果为真 建议 多使用括号 不要背优先级 例 if a b a c if a b a c 条件分支 三 switch语句 switch 表达式 case常量1 语句1 break case常量2 语句2 break case常量3 语句3 break default 语句n 注意 1 每一个分支只能是常量或常量表达式 2 每一个分支之后必须有break 3 表达式的结果应该落在case的范围之内 循环控制 while型 while 条件 循环体 条件 循环体 成立 不成立 特点 先判断 再执行 可能一次也不执行 循环控制 do型 do 循环体 while 条件 条件 循环体 成立 不成立 特点 先执行 再判断 至少执行一次 循环控制 for型 for 语句1 条件 语句2 循环体 语句1 条件 循环体 语句2 成立 不成立 特点 语句1无条件执行一次 语句2是循环体的一部分 for循环是万能循环语句 可以代替前两种类型 循环控制 break可以退出任何类型的循环 主要用于多种条件循环 continue可以在特定条件下只执行部分循环体 break和continue主要是为程序书写清晰和简洁而使用 并非必须 本质上都可以通过改变循环结构而取消 数组 数组的本质 一组相同类型的变量的顺序集合 数组的各元素必须类型相同 数组的长度定义必须是常量或常量表达式 数组在内存中是线性存贮 数组元素具有简单变量的一切性质 不允许整体操作 数组的下标从0开始 系统不对数组操作进行越界检查 字符数组与字符串 字符数组 charuniversity 20 B U A A 字符串 charuniversity BUAA 字符串的操作 可以像普通数组一样使用 也可以使用专为字符串开发的库函数 字符数组的使用 与普通数组的使用相同 字符串的本质 以字符 0 结尾的字符数组 注意 字符串的长度不包括 0 但必须留足够的空间 函数的定义 函数是使程序可以重复使用的一种手段 函数的定义 intfactorial intx intresult i result 1 for i 1 i x i result result i return result 函数名 形参表 函数类型 函数体 返回语句 形参表必须逐一变量说明 形参表各变量用逗号分隔 函数体可以没有 返回类型默认为int 第一行的结尾不要加分号 形参表函数唯一的可变部分 函数类型实际是返回值的数据类型 函数的使用 intfactor intx inty main inta b c c factor a b intfactor intx inty 函数的说明必须与函数定义完全一样 函数的使用实参和形参必须一一对应 函数的定义局部变量封装 includemain inta b c a 4 b 5 c max a b 函数的调用过程 intmax intx inty intz if x y z x elsez y return z x 4 y 5 c 5 实参 形参 实参与形参一一对应 个数相等 类型一致 顺序相同 参数传递的本质是单向变量拷贝 内部变量封装 不影响到函数以外的变量 允许存在与其它函数同名的变量 几种不同的函数 有返回值 有参数 main A f n B f n 3 C f k 无返回值 有参数 main star 1 star 3 printf d a 有返回值 无参数 main c getchar 无返回值 无参数 main alarm on alarm off 函数的嵌套调用 main func a func b func a func c func b func d func e func c func d func e 注意 函数可以嵌套调用 但不可以嵌套定义 所有函数都是平行的 即所有函数的地位都是相同的 只有主函数例外 变量的存贮类型 全局变量不在任何一个函数中定义 可以被任何函数使用 局部变量在函数内部定义 只可以在被定义的函数内部使用 动态变量随着函数的执行而产生 随着函数的退出而消亡 静态变量在程序执行之前产生 在程序结束之后消亡 全局变量肯定是静态变量 静态变量不一定是全局变量 动态变量肯定是局部变量 局部变量不一定是动态变量 作用域 生存期 问题 变量为什么要有存贮类型之分 指针 本质 存贮是变量的地址 指针变量有类型 只能保存相应类型变量的地址 星号的不同含义 在定义中出现 表明该变量为指针变量 其所保存的内容为变量的地址 不可省略 但它并不是变量的一部分 int p1 float fp 在使用中出现 是对指针的操作 其作用是获得指针所指向内存的值 p1 a p1 a pa 取地址操作 pa 取内容操作 b pb b pb 和 是一对互逆操作 指针的操作 问题 可以打印出指针的具体值吗 指针的运算 算数运算指针只允许加减运算 含义为指针指向的偏移 p2 p1 3 p1 p2 关系比较允许有大于 小于 相等 不相等的比较 含义为指针指向位置的比较 if p1 p2 if p1 p2 指针不允许有其他类型的运算 指针定义必须逐一说明 int p1 p2 p2将是一个整型变量指针变量存贮的是地址 不能和普通变量 常量直接操作 inta p a 66 p 1000 不会将地址1000赋给p指针变量未初始化之前指向不确定的内容 不能直接引用 inta p a p a将得到一个不确定的值 p 66 向不确定的空间写数据 后果无法预料 错误也难以发现 指针操作常见的错误 swap int p1 int p2 main inta b pa pb a 10 b 20 pa 主函数 swap a b pa pb p1 p2 temp 指针变量作为函数参数 问题 a b是局部变量 当程序离开main函数时它们为什么没有消亡 指针变量作为参数的目的 突破封装 延伸函数的触角 扩大作用域 用函数计算两个数的和与差plusmin inta intb int p1 int p2 main inta b plus minus pa pb scanf d d a b plus minus pa pb a b p1 p2 main plusmin 用指针从函数带回多个结果 指针与数组 C语言规定 数组名代表数组第一个元素的地址 inta 10 p p a p 3 6 p 3 6 a 3 6 用指针访问数组时易犯的错误 main inta 10 i p p a for i 0 i 10 i scanf d p p for i 0 i 10 i printf d p p a 0 a 9 p p p p p p a p a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 用指针访问数组时易犯的错误 main inta 10 i p p a for i 0 i 10 i scanf d p p for i 0 i 10 i printf d a a 虽然数组名也是指针 并且指向数组的第一个元素 但它是常量 不能改变 C语言规定 数组名本身也是一个指针 但它不可变 利用指针向函数传递大量数据 main inta 10 b 5 i for i 0 i 10 i a i 2 i for i 0 i 5 i b i i i print array print array voidprint array int data intnum inti printf Thearrayis for i 0 i num i printf d data data printf n Thearrayis 0 2 4 6 8 10 12 14 16 18 Thearrayis 0 1 4 9 16 执行结果 例2 利用函数打印数组 a 10 b 5 指针与字符串 指针方式的执行过程 计算字符串长度申请空间申请指针空间指针指向字符串 univer 注意 用指针方式定义的字符串没有名字 只能通过指针方式访问 char temp BUAA char univer temp 相当于 char univer BUAA 字符串指针作为函数参数 main char a Ilikeprogramming char b 100 copy string a b printf s b 向函数传递字符串指针与向函数传递数组指针本质上是一样的 唯一的区别在于不需要明确告诉函数字符串的长度 例4 利用函数实现字符串拷贝 copy string char str1 char str2 while if str1 0 break str2 str1 str1 str2 str2 0 关于字符串的注意事项 字符串的本质 带有结束标志的字符数组 1 数组有多大就占用多少内存空间 2 对于数组一般不能进行整体操作 charstr 14 str Cprogramming 3 可以利用专用库函数对其进行操作 字符串指针的本质 存贮字符串地址的指针变量 1 只占用一个变量的存贮空间 2 不能将一个字符串存入该指针 char str str Cprogramming 字符串名也是指针 但它是常量 不可变 基本要求 指针的基本概念与基本使用指针作为函数参数的使用方法用指针从函数中带回多个结果用指针操作数组的方法用指针向函数传递数组用指针操作字符串的基本方法 结构体 结构体是对数据封装的主要方法函数是对程序封装的主要方法 结构体的定义 structbook charname 20 charpublisher 40 longpub date intpages floatprice structstudent charname 20 intage intgender floatmath floatenglish 结构体的定义只说明了该类型变量的组成情况 并没有真正的申请内存空间 结构变量的内存分配 structstudent charname 20 intage intgender floatmath floatenglish structstudentst1 st2 st1 st2 结构体的基本应用 structstudent charname 20 intage main structstudentst1 st2 strcpy st1 name LiMing st1 age 19 strcpy st2 name LiuYifei st2 age 21 printf Name tAge n printf n printf s t d n st1 name st1 age printf s t d n st2 name st2 age NameAge LiMing19LiuYifei21 执行结果 结构数组 结构数组 structstudent 351401 35 structbooklib 3400 结构数组的使用 strcpy 351401 1 name XiaoZhang if 351401 22 age 21 for i 0 i 34 i sum sum 351401 i age 对结构数组的引用一般是对元素的引用 只要遵循对数组元素引用的规则和对结构体变量的引用规则就可以了 351401 0 351401 1 351401 2 结构的嵌套定义与使用 嵌套定义 一个结构中包含另一个结构 structstudent charname 20 structbirthd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚赔偿协议及财产分割及子女抚养权法律文书
- 离婚后共同财产管理及同居生活协议书范本分析
- 航天设备租赁合同转让与航天安全三方协议
- 智能社区监控系统采购、施工及维护服务合同
- 离婚协议书撰写模板与法律风险提示
- 智能物流:智能物流委托借款基础设施建设项目合同
- 班组长三级安全培训课件
- 大班奥运中国课件
- 辽沈战役课件
- 物料需求计划培训大纲
- 2025年人社局编外考试题库及答案
- 木制品厂安全生产培训课件
- 小学科学新教科版三年级上册全册教案(2025秋新版)
- 苏教版2025-2026秋三年级数学上册教学计划及课时安排
- 【里斯】年轻一代新能源汽车消费洞察与预测 -新物种 新理念 新趋势(2024-2025)
- 2025年综合基础知识题库(含答案)
- 6人小品《没有学习的人不伤心》台词完整版
- 基于MAXIMO的发电行业EAM解决方案
- (完整版)英语能力B级考试课件
- (中英)订购单-Purchase-Order
- 框架结构(课件)
评论
0/150
提交评论