第2章《C++程序设计教程与实验指导》-杨国兴C++基础.ppt_第1页
第2章《C++程序设计教程与实验指导》-杨国兴C++基础.ppt_第2页
第2章《C++程序设计教程与实验指导》-杨国兴C++基础.ppt_第3页
第2章《C++程序设计教程与实验指导》-杨国兴C++基础.ppt_第4页
第2章《C++程序设计教程与实验指导》-杨国兴C++基础.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

C 语言程序设计 杨国兴张东玲彭涛 中国水利水电出版社 第2章C 基础 2 1常量与变量2 2指针与引用2 3动态内存分配2 4位运算符2 5名字空间 2 1常量与变量 2 1 1常量常量 在程序运行中 其值不能被改变的量称为常量 常量又分为直接常量和符号常量两种 1 直接常量 直接使用数值或文字表示的值 1 整型常量如 10 20 0还可以八进制或十六进制表示 如034 0 x23不带后缀的整型常量为int型 带后缀L或l可表示长整型常量 带后缀U或u表示无符号整型常量 2 实型常量如 2 18 5 6 2 3E 2 3 12E 2不带后缀的实型常量为double型 带后缀F或f可表示单精度实型常量 第2章C 基础 2 1常量与变量 2 1 1常量 续一 3 字符型常量以单引号括起来的单个字符 如 a 3 转义字符 键盘不便于直接输入的字符 如回车符 制表符等 通常以 开头表2 3转义字符 第2章C 基础 2 1常量与变量 2 1 1常量 续二 4 bool型常量bool常量只有两个 true 真 false 假 在内存中占有一个字节的存储空间 5 字符串常量由一对双引号括起来的若干字符 如 abc 字符串常量的末尾自动加入结束标志 0 因此字符串在内存中占有的字节数为字符个数 1若字符串中包含特殊字符 如 回车 制表符等 也应以他们对应的转义字符形式表示 第2章C 基础 例2 1检测基本数据类型所占的字节数 includevoidmain cout int sizeof int endl cout short sizeof short endl cout long sizeof long endl cout float sizeof float endl cout double sizeof double endl cout longdouble sizeof longdouble endl cout char sizeof char endl cout bool sizeof bool endl 第2章C 基础 2 1常量与变量 2 1 1常量 续三 2 符号常量 直接使用符号表示的常量值 包括宏定义和const定义的符号常量 1 宏定义语法形式 define宏名字符串如 definePI3 14程序编译前会自动用字符串取代程序中出现的宏名 2 const定义语法形式 const类型说明符常量名 常量值 如 constfloatpi 3 14 宏定义在预编译时 只进行简单的替换 不做语法检查宏定义没有数据类型 而const定义的符号常量是有数据类型的 第2章C 基础 例2 2使用符号常量 includevoidmain definePI3 14constintA 10 cout PI 10 10 n cout A 20 n 第2章C 基础 2 1常量与变量 2 1 2变量1 变量的定义 程序运行中值可以被改变的量 变量必须先定义再使用 变量定义的一般形式语法形式 数据类型变量名1 变量名2 变量名n 如 inta b c 2 变量的初始化含义 定义变量的同时为其赋初值两种形式 用赋值号 或用括号如 floata 3 14 或floata 3 14 第2章C 基础 例2 3从键盘输入n的值 计算从1到n的累加和 includevoidmain intn sum 0 cin n inti for i 1 i n i sum i cout sum n 第2章C 基础 2 2指针与引用 2 2 1指针1 地址与指针的概念 1 内存地址计算机的内存储器被划分成一个个的存储单元 这些存储单元按一定的规则编号 这个编号就是存储单元的地址 每个存储单元的大小为一个字节 每个单元有一个唯一的地址 2 变量的地址在程序中定义的所有变量 都要分配相应的存储单元 不同类型的数据所需要的存储空间的大小不同 系统分配给变量的内存空间的起始单元地址称为该变量的地址 如 inta 则0 x3000为变量a的地址 第2章C 基础 2 2指针与引用 2 2 1指针2 指针与指针变量 1 指针 一个变量的地址也称为该变量的指针 2 指针变量 用于存储其它变量的指针 即地址 的变量 指针变量的定义 数据类型 指针变量名 如 int p1 float p2 char p3 注意 指针变量所指向的变量类型不能改变指针变量必须指向具体内存地址才能引用 如 int p p 10 3 指针运算符 与取地址运算符 第2章C 基础 例2 4通过指针变量存取变量的值 includevoidmain inta p1 doubleb p2 charc p3 p1 程序运行结果为 1011 2A 第2章C 基础 例2 5输入a和b两个数 按从小到大的顺序输出 includevoidmain inta b int p1 p2 p cout a b p1 程序运行结果为 请输入两个整数 3010min 10max 30 第2章C 基础 2 2指针与引用 2 2 1指针3 指针作为函数的参数指针作为函数的参数 实际上传递的是变量的地址 进行的是地址传递 例2 6指针作为函数参数 被调函数中交换参数值 includevoidswap int x int y voidmain inta b a 10 b 20 swap voidswap int x int y inttemp temp x x y y temp 第2章C 基础 2 2指针与引用 例2 6程序运行过程中变量值的变化分析 a b c d 程序运行结果为 20 10 第2章C 基础 2 2指针与引用 2 2 2引用1 引用的概念引用是一种特殊的变量 可以认为是一个变量的别名 定义引用的一般格式 类型说明符首先定义变量a 并初始化为1 然后定义引用b 并初始化为a 即b是a的别名 因此a和b是同一个单元 注意 定义引用时一定要初始化 指明该引用变量是谁的别名 第2章C 基础 例2 7引用的使用 includevoidmain inta 1 intc 10 int 程序运行结果 1 1 1010 10 1020 20 10 定义引用b 并将其作为a的别名 将c的值赋给b 不是将b作为c的别名 第2章C 基础 2 2指针与引用 2 2 2引用 续一 2 引用作为函数的参数例2 8写一个函数 用引用作为参数 交换函数中两个变量的值 includevoidswap intx inty voidmain inta b a 10 b 20 swap a b cout a b endl voidswap int 程序运行结果为 20 10 第2章C 基础 2 2指针与引用 2 2 2引用 续二 例2 8程序运行过程中参数值的变化图示 注意 引用作参数时 函数的实参与形参在内存中共用存储单元 因此形参的变化会使实参同时变化 第2章C 基础 2 3动态内存分配 在程序运行过程中根据需要动态分配存储空间 不需要时还可以将空间释放 通过new和delete运算符实现 1 动态分配一个数据的存储空间通过new运算符实现动态分配内存 格式如下 new类型名 初值 如 int p1 p2 p1 newint 10 p2 newint 运算符delete用来释放由运算符new动态分配的存储空间 使用格式如下 delete指针名 如 deletep1 第2章C 基础 2 3动态内存分配 2 动态分配多个连续的数据存储空间通过new运算符动态分配数组 格式如下 new类型名 整型表达式 如 int p1 p1 newint 10 用delete删除动态数组时 要在指针前加 格式如下 delete 指针名 如 delete p1 第2章C 基础 例2 9动态内存分配的使用 includevoidmain int p1 p2 p1 newint 10 p2 newint 10 inti for i 0 i 10 i p2 i i cout p1 endl for i 0 i 10 i cout p2 i cout endl for i 0 i 10 i cout p2 i p2 i 与 p2 i 所访问的数据相同cout endl deletep1 delete p2 程序运行结果为 1001234567890123456789 第2章C 基础 2 4位运算符 2 4 1位运算符C 使用位运算符可以对数据按二进制位进行操作 1 按位与 将两个操作数对应的每一位分别进行逻辑与如 9 79 000010017 000001119 7 000000019 7结果为12 按位或 将两个操作数对应的每一位分别进行逻辑或3 按位异或 将两个操作数对应的每一位分别进行异或 第2章C 基础 2 4位运算符 2 4 1位运算符 续 4 按位取反 单目运算符 对二进制的每一位取反5 左移位 使运算符左侧操作数的各位右移指定位数 溢出的低位舍弃 对无符号数和有符号中的正数 高位补0 对于有符号数中的负数 有些系统补0 称为逻辑右移 有些系统补1 称为算术右移 如7 2的结果是1 7 7 2 第2章C 基础 2 4位运算符 2 4 2位运算符应用举例例2 10输入变量a b的值 并将变量a的低4位置为0 将变量b的低4位置为1 includevoidmain inta b cin a cin b a a 0 xf为十六进制数 它的后四位为1 其他位均为0 取反后后四位为0 其他位均为1 若输入25和23 程序执行结果为 1631 第2章C 基础 2 5名字空间 2 5 1名字空间的定义与使用1 名字空间的定义namespace名字空间名 例 namespaceNameSpace1 inta intf1 floatf2 1 名字空间只能在全局范围那定义 但名字空间是可以嵌套的 2 一个名字空间可以用另一个名字作为它的别名 例如使用ns1作为上述名字空间NameSpace1的别名 可以用下面的语法 namespacens1 NameSpace1 第2章C 基础 2 5名字空间 2 5 1名字空间的定义与使用2 名字空间的使用 1 使用域运算符格式如下 名字空间名 标识符例如下面一行程序 可以访问名字空间NameSpace1中的变量a和函数f1 NameSpace1 a NameSpace1 f1 第2章C 基础 例2 11名字空间的定义与使用 includenamespacens1 intfun intx inty namespacens2 intfun intx inty namespacens3 intfun intx inty intns1 fun intx inty returnx y intns2 fun intx inty returnx y intns2 ns3 fun intx inty returnx y voidmain cout ns1 fun 3 4 endl cout ns2 fun 3 4 endl cout ns2 ns3 fun 3 4 endl 程序运行结果 712 1 第2章C 基础 2 5名字空间 2 5 1名字空间的定义与使用2 名字空间的使用 2 使用using指令格式如下 using名字空间名 using名字空间名 标识符 第一种格式表示在当前范围内 可以直接使用指定名字空间中定义的变量和函数等 而不需要加名字空间的限定 第二种格式表示在当前范围内 可以直接使用指定名字空间中指定的变量或函数 而不需要加名字空间的限定 第2章C 基础 例2 12使用using指令 includenamespacens1 intfun1 intx inty intfun2 intx inty intfun3 intx inty intfun1 intx inty returnx y intfun2 intx inty returnx y intfun3 intx inty returnx y usingnamespacens1 voidmain cout fun1 3 4 endl cout fun2 3 4 endl cout

温馨提示

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

评论

0/150

提交评论