windows程序设计.ppt_第1页
windows程序设计.ppt_第2页
windows程序设计.ppt_第3页
windows程序设计.ppt_第4页
windows程序设计.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Windows程序设计 2000 9 第二章C 数据操作基础自学 关键字 标识符 基本数据类型 数据类型转换 基本运算 自定义数据类型 一些说明 1 C 程序进行输入和输出的操作方法 includeintmain intx y 定义两个整型变量cin x y 键盘输入变量值cout x x endl y y endl 按格式屏幕return0 输出变量值 cin是一个代表标准输入设备 一般代表键盘设备 的对象 cout是一个代表标准输出设备 一般代表显示设备 的对象 它们都是C 系统预定义的对象 它们以及输入操作符 和输出操作符 都在头文件iostream h中被声明 2 标识符和关键字C 语言中 标识符大小写敏感 Sun sun 关键字是特殊的标识符 不能用作变量 常量等的名称 3 基本数据类型 intnvoid注意每种数据类型的取值范围 4 基本运算逻辑运算部分 整个数或表达式 与 按位 与 整个数或表达式 或 按位 或 例 a 3 011 b 4 100 a b 1a b 000a b 1a b 111 5 数据类型转换C 定义的标准类型转换 隐式转换 规则是一种保值映射 即总是将一个值域最大值较小的类型转换为值域最大值较大的类型 赋值操作总是将右操作数的值转换为左操作数的类型后进行赋值 char shortintintunsignedlongunsignedlongdoublefloatdouble 显式类型转换有两种方法 强制转换法 类型名 表达式函数法 类型名 表达式 输出操作时若要进行类型转换 必须使用显式类型转换 例 floatc inta 5 b 8 c a b c float a float b c float a float b printf a fb f n a b errorprintf a fb f n float a float b 6 枚举与联合枚举 enumcolor red green blue white yellow my color enuncoloryour color colorhis color 枚举类型中文字量标识符的作用域 文字量隐含地具有一个整数常量值 intI blue 不能用整数值来初始化或更新枚举类型的对象 my color 2 errormy color blue 不能对枚举类型的对象进行算术或逻辑运算 联合 联合类型的对象中所有数据成员的存储开始于同一位置 联合类型的对象所需的最大存储空间由数据成员中需要存储空间最大的数据成员决定 两个类型的对象所占用的存储空间 sizeof X 为6个字节 sizeof Y 为4个字节 例 classXunionY public public inta inta doubled doubled 联合是为了将一些结构上有细微差异的对象作为一类对象对待 但在表达细微差异方面 如不使用联合 而使用继承结构 将会得到更加合理的程序 参考书 1 3 5 3 8 10参考书 2 第3 4 7章2 1C 存储类 auto存储类 作用域局部于某个程序范围 采用堆栈方式分配内存空间 auto关键字可省略 autoint int register存储类 将所声明的变量放入寄存器内 目的是提高运行速度 若系统寄存器已被占用 则自动转换为auto变量使用 registerint extern存储类 外部变量 作用域是所有的函数和程序段 一般用于在函数之间传递数据 参考书 1 p61 static存储类 是一种局部变量 和auto最大的不同是静态变量在内存中以固定地址存放 因此 只要程序还在执行 它就不会随着声明程序段的结束而消失 参考书 1 p62 includevoidfun intI 0 staticints I 0 cout I I endl cout s I s I endl I s I voidmain fun fun 运行结果 I 0s I 0I 0s I 1 2 2控制结构条件语句 循环语句 转移语句 2 2 1条件语句if语句if else语句if elseif语句 条件操作符switch语句 if 条件表达式 语句序列 if 条件表达式 语句序列1 else 语句序列2 if 条件表达式1 语句序列1 elseif 条件表达式2 语句序列2 elseif 条件表达式3 语句序列3 else 语句序列4 是一个三元操作符 被称为条件操作符 使用语法是 表达式1 表达式2 表达式3 等价于 if 表达式1 表达式2 else表达式3 例 result a 0 a a 注意 表达式1 2 3的数据类型不能是void类型 switch 变量名 case值1 语句序列1 break case值2 语句序列2 break default 语句序列n 2 2 2循环语句 for循环 for exp1 exp2 exp3 statement while循环 while expression do while循环 do statement while expression 三种循环都可以嵌套 for exp1 exp2 exp3 statement 等价于 exp1 while exp2 statement exp3 例 intsum 0 for intI 1 I 10 I sum I 2 2 3转移语句 break语句 强制退出循环及中断case语句 直接执行循环体后的语句 continue语句 不完全退出循环 而是使循环重新回到测试位置 并忽略此语句至循环结束前的语句序列 goto语句 无条件转移 只限在同一程序段内转换 不能跳到另一函数或程序内 2 3数组 字符串和指针2 3 1数组1 数组对象声明数据类型标识符 常量表达式 2 说明 1 数组中的每个元素具有相同数据类型 inta 5 2 访问数组元素时 使用下标值指明 第一个元素下标值为0 a 2 12 3 数组内各元素在内存中连续存放 4 数组在声明的同时可以赋初值 初值个数小于等于数组元素个数 若小于 未提供初值的元素使用缺省值初始化 若等于 数组长度可以不指定 inta 5 1 2 floatb 1 0 2 5 3 2 4 9 5 多维数组的每一维大小都用 单独括起 赋初值时按行赋给 初值个数同样小于等于每一维的元素个数 例 inta 3 2 3 4 3 4 5 1 intb 3 2 0 1 2 intc 2 1 2 2 3 3 4 error 只有外层数组的元素个数可以省略 6 使用sizeof函数求数组元素个数inta 5 2 3 5 floatb 3 1 2 3 2 3 intaNum sizeof a sizeof int intbNum sizeof b sizeof float 3 3 使用数组时的注意事项 1 两个数组对象之间不能相互赋值 inta 5 b 5 a b error 2 数组类型的操作数不能作为左值使用 a error 3 数组不能作为参数在函数之间进行参数传递 只能通过向函数传递指向数组对象的第一个元素对象的指针来达到传递数组的效果 4 C 运行系统不能对数组访问的越界问题 下标值不正确 进行检查 2 3 2字符串与字符数组的关系 字符串是由一串字符组成的数组 但字符串的末尾一定是 0 而字符数组则不一定 与字符串有关的标准函数 gets putsfgets fputssprintfstrcpy str1 str2 strcat str1 str2 strcmp str1 str2 strlen str 2 3 3指针1 定义 包含另一变量内存地址的变量 3 指针与数组的关系数组是指针的另一种表示法 数组的名字实际就是数组的起始地址 intarr 2 0 1 arr 1 和 arr 1 是完全一致的 2 声明指针在使用前需进行声明 声明格式为 数据类型 变量 或数据类型 变量 4 对指针值的操作 例 includeintmain inta 1 2 3 4 5 int IntPtr 1 可以对指针值进行算术和关系操作 2 只能在同类型的指针值之间进行关系比较操作 而且被比较的两个指针值指向同一数组对象的元素对象 3 一个指针值可以与整数0进行相等或不等关系操作 5 与 是一个一元操作符 它操作一个对象 得到该对象的存储单元的地址值 例 inti int p p 说明 后必须跟左值表达式 而由 与其后的指针表达式形成的整个表达式也是左值表达式 左值表达式指程序中表达一个对象标识 对象引用 的表达式 因它可以放在赋值操作符的左边而得名 详细内容参见参考书 2 p164 165 也是一个一元操作符 用于表达被指针指向的对象 6 new与deletenew用于为指针分配内存空间 delete用于释放指针所占有的内存空间 例 int p p newint deletep 两种内存分配方式 堆栈分配和堆内空间分配 标准C用malloc和free函数在堆内分配内存块和释放内存块 2 当表达式中出现一个数组类型的操作数时 这个操作数被自动地强制为指向该操作数所标识的数组对象的第一个元素对象的指针值 下面两个赋值表达式是等价的 inta 1 2 3 int p p a p 7 使用指针时的注意事项 1 在程序中注意保持指针值的确定性 避免出现悬空指针 因此在声明一个指针时 应立即对它进行初始化或赋初值 2 4函数2 4 1函数定义函数是由功能相关的语句序列所组成的独立模块 是结构化程序的基本结构 函数类型函数名 数据类型参数1 函数体 语句序列 说明 函数类型指的是函数的返回值类型 若未设置函数类型 系统会自动将其假设为整数类型 若不希望函数返回任何值 就将函数类型设置为void 2 4 2函数调用当一个函数定义有形参时 在进行函数调用时 必须提供与形参个数 类型相同的实参 在C 中 有两种参数传递机制将实参的值传递给形参 值传递 值调用 和引用传递 引用调用 1 值传递在这种机制中 实参的值被拷贝到由相应形参名字所标识的对象中 在函数内部对形参的访问或更新都是是对这个对象的访问或更新 实参本身的值在调用前后和调用过程中都不发生变化 intdouble inta a 2 cout a a endl returna includevoidmain intb 10 double b cout b b 运行结果 a 20b 10 2 引用传递若希望通过函数调用改变实参的值 就必须采用引用传递机制 关于引用的具体含义及使用要点将在3 7节中讲解 2 4 3函数的其他特性 1 缺省参数函数声明时可以为一个或多个参数指定缺省参数值 voiddelay intx inty 100 当进行函数调用时 编译器按从左至右的顺序将实参与形参结合 若未指定足够的实参 则编译器按同样的顺序用函数声明中的缺省值来补足所缺少的实参 delay 5 等价于delay 5 100 若函数有多个参数 那么所有指定了缺省值的参数必须排在参数序列的最右边 voidf intx inty 0 intz errorf 2 4 2 递归函数在函数内部直接或间接地调用函数本身 称为递归调用 递归调用要注意设置出口 避免死循环 当重载的函数带有缺省参数时 必须注意避免错误声明 voidf intx inty 0 voidf intx errorf 5 2 4 4函数重载在C 中 允许两个或两个以上的函数采用相同的名字 只要使用不同类型 不同数目的参数或不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论