指针和引用.ppt_第1页
指针和引用.ppt_第2页
指针和引用.ppt_第3页
指针和引用.ppt_第4页
指针和引用.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

一 指针的概念1 内存由顺序排列的存储单元组成 存储单元以字节为单位 每个存储单元对应一个地址 2 指针是存储特定类型数据的地址 3 指针的类型就是指针所指向的数据的类型 4 两种特殊的指针 void指针 无类型指针 可用来指向任何类型的数据 空指针 NULL 不指向任何数据 其地址值为0 6 1指针的概念 二 指针变量的定义和初始化类型修饰符 变量名 指针表达式 例 int pn ph doubled pd1 6 1指针的概念 三 常值指针1 指针所指向的数据为常值 const放在 之前 如 charconst s Hello 或constchar s Hello 则 s string s Hi 6 1指针的概念 2 指针本身为常值 const放在变量名之前 如 char consts Hello 则 s string s Hi 3 指针本身和指针所指向的数据都为常值 和变量名之前各放一个const 如 charconst consts Hello 则 s string s Hi 6 1指针的概念 四 指针的基本操作 一 指针赋值 1 同类型的指针之间可以互相赋值 2 任何类型的指针都可赋值给void指针 但反之不可 例 intd pd1 6 1指针的概念 二 取变量的地址 99 d pd1 四 判断空指针 1 如果p是空指针if p 0 if p NULL if p 2 如果p不是空指针if p 0 if p NULL if p 6 1指针的概念 五 计算两地址间数据单元的个数 同类型的两指针相减 例 intn m 12 p1 n的值为5 表示p1 p2之间有5个int型数据 1 计算数据个数时 不把作为被减数的那个指针所指向的数据计算在内 2 只有高地址指针减低地址指针才有意义 6 1指针的概念 六 指针移动1 移动n个单位 向后 高地址 移动n个数据单元指针表达式 n指针变量 n 向前 低地址 移动n个数据单元指针表达式 n指针变量 n 6 1指针的概念 2 移动1个单位 指针变量 指针变量先将指针向后 或向前 移动一个单位 再以改变后的指针值作为表达式的值 指针变量 指针变量 先以指针变量的值作为表达式的值 再将指针向后 或向前 移动一个单位 6 1指针的概念 例1 intk pk 若pk初始值为3691 则输出结果为 36913695 七 指针表达式的副作用数值表达式副作用的有关结论 对于指针表达式同样适用 作用于变量的操作只能施加于变量对象 当若干个作用于变量的操作施加于同一变量时 除了最后一个外 不得有后增1或后减1操作 6 1指针的概念 八 指针类型的强制转换任何类型的指针之间都可以强制转换 格式 类型修饰符 指针表达式如 inti char p char 6 1指针的概念 一 一维数组元素的指针访问方式1 一维数组的数组名是指向该数组首元素的指针 如 intA 10 则 A 2 访问数组元素的两种方式 下标方式 A i 指针方式 A i 6 2指针与数组 3 指向一维数组首元素的指针可以象数组名一样使用 如 intA 10 pa A 则 A i A i pa i pa i 6 2指针与数组 例 ints 0 1 2 3 4 5 p s cout endl p p 1 p 2 s 3 p 4 s 5 cout endl p cout endl p 注 数组名是指针常量 其值不能改变 012345 s p 输出结果为 01234511 6 2指针与数组 二 二维数组元素的指针访问方式1 将二维数组的每一行当作一个一维数组 如 intB 3 4 则 可将B看作由三个一维数组B 0 B 1 B 2 组成 2 二维数组的数组名是指向该数组首行的指针 如 intB 3 4 则 B 6 2指针与数组 3 二维数组元素的下标访问方式与指针访问方式的转换 B i j B i j B i j 4 指向二维数组首行的指针可以象二维数组名一样使用 如 intB 3 4 pb 4 B 则 pb i j B i j 6 2指针与数组 三 指向数组的指针1 指向数组的指针 与该数组的数组名等价的指针 2 指向数组的指针变量的定义格式 指向一维数组的指针变量 类型修饰符 变量名 一维数组名 如 intA 10 int pa A 指向二维数组的指针变量 类型修饰符 变量名 列数 二维数组名 如 intB 3 4 int pb 4 B 6 2指针与数组 四 字符指针与字符串指向字符型数组首元素的指针可代表存储于该处的字符串 如 chars1 string char p1 s1 则 s1 p1表示同一个字符串 string 6 2指针与数组 五 指针数组如 int p 5 p是一个指针数组int p 5 p是一个指向二维数组的指针例1 P1676 3 5charWEEKDAY 4 Sun Mon Tue Wed Thu Fri Sat 例2 P1886 1 13char WEEKDAY Sun Mon Tue Wed Thu Fri Sat 6 2指针与数组 六 数组参数数组参数可以用指针来表示 如 voidsumall intdata 5 intresult introws voidsumall int data 5 int result introws 6 2指针与数组 一 指针参数1 函数要处理的不是指针本身 而是指针所指向的数据 2 指针参数的传递 把实参指针所指向的数据间接地传递给被调用的函数 3 通过指针参数的传递 形参指针和实参指针指向同一数据 因此通过改变形参指针所指的数据可以改变实参指针所指的数据 6 3指针与函数 例 intaddTo intdata int agg return agg data inttotal 0 addTo 5 输出结果为 513 0 5 13 totaltotaltotal aggaggagg 6 3指针与函数 说明 1 若形参是指向简单变量的指针 则对应的实参通常是带 的简单变量名 如 total2 若形参是指向数组变量的指针 则对应的实参通常是一个数组名 6 3指针与函数 二 指针函数 函数的返回值为指针 类型修饰符 函数名 形参表 函数体例 函数strchr 在字符串str中查找字符ch 并返回所找到的字符的地址 char strchr char str charch while str 0 if str ch returnstr str return0 则strchr chinese i 的调用结果为 inese 6 3指针与函数 三 函数指针 指向函数的指针 1 定义格式 类型修饰符函数名 形参表 类型修饰符 变量名 形参表 函数名 类型修饰符 函数名 形参表 类型修饰符 变量名 形参表 函数名 6 3指针与函数 例 intfa int char int pfa int char fa 例2 char fb constchar char pfb constchar fb 6 3指针与函数 2 函数名就是指向该函数的指针常量 3 函数指针可用来调用所指向的函数 若有 intadd int int int p int int add 则有 add 3 5 p 3 5 p 3 5 add 3 5 6 3指针与函数 一 引用 为变量 函数等对象规定的别名 二 定义引用变量的格式 类型修饰符 别名 别名所代表的对象 1 引用变量定义时必须初始化 2 引用所代表的对象不同 则定义引用的格式也不同 6 4引用 例 inti 0 int 6 4引用 三 对引用的操作就是对其所代表的变量的操作 例 inti 5 int 输出结果为 5515152020 6 4引用 四 引用与被引用的对象具有相同的地址 例 inti 5 int输出结果为 0 x8f8bfff40 x8f8bfff4 6 4引用 五 引用参数templatevoidswap T a T b Tc a a b b c voidmain intx 3 y 5 swap templatevoidswap T 程序运行时 动态地取得或释放空间 new 从内存申请动态空间 申请成功 返回一个指向该空间的指针 申请失败 返回一个空指针 delete 释放用new操作符申请的动态空间 6 5动态空间管理 一 非数组动态空间new类型说明 表达式 delete指针表达式 指针表达式 例 int p1 p2 p1 newint 5 p2 new int p2 newint 7 cout p1 p2 deletep1 p2 p2 输出结果为 57 6 5动

温馨提示

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

评论

0/150

提交评论