第7部分 指针、指针与数组 →·编程步骤: ·分析→程序框架(粗算法)→细算法→程序→调试
第7部分 指针、指针与数组 •编程步骤: •分析→程序框架(粗算法)→细算法→程序→调试
新的概念:指针( Pointer) 指针也是一种数据类型 种特殊的数据类型,这种类型存储的是地 址 c/c++的特色 有些复杂但很实用 指针变量与指针常量 指针变量 专门存放地址数据的变量 指针常量 !一个固定的地址,例如:数组名
2 新的概念:指针(Pointer) ▪ 指针也是一种数据类型 ▪ 一种特殊的数据类型,这种类型存储的是地 址 ▪ C/c++的特色 ▪ 有些复杂但很实用 ▪ 指针变量与指针常量 ▪ 指针变量 ▪ 专门存放地址数据的变量 ▪ 指针常量 ▪ 指一个固定的地址,例如:数组名
两种寻址方式 如何读写内存中的数据? 通过变量的地址访问变量所 在的存储单元 两种寻址方式 直接(寻址)访问 ■直接按变量地址来存取 变量内容的访问方式 间接(寻址)访问 东西 房间1 的钥匙 ■通过指针变量来间接存 取它所指向的变量的访 房间1房间2 问方式 直接寻址间接寻址
3 两种寻址方式 ▪ 如何读写内存中的数据? ▪ 通过变量的地址访问变量所 在的存储单元 ▪ 两种寻址方式 ▪ 直接(寻址)访问 ▪ 直接按变量地址来存取 变量内容的访问方式 ▪ 间接(寻址)访问 ▪ 通过指针变量来间接存 取它所指向的变量的访 问方式 房间1 东西 房间2 房间1 的钥匙 直接寻址 间接寻址
重点:直接寻址与间接寻址的表示 数据类型:int*(指向 直接寻址整型变量的指针) 变量名 ti:|·变量名称:pi 变量的初值:&i i=3 含义:向系统申请一个3变量i 间接寻址动态区的内存空间,用 来存储整型指针变量p的 初值&i,即将p指向了变 int pi; 量i。 30102004变量p pi=&i:(·通过*p这种形式,实现对变 量i间接引用。 3 如果能直接寻址那当然就不用间接寻址了 但有时,只能用间接寻址的方法解决问题
4 ▪间接寻址访问: int i; int *pi; pi=&i; *pi=3; 重点:直接寻址与间接寻址的表示 ▪ 直接寻址访问: int i; i=3; 2000 0 ┇ 变量 i ┇ 3010 变量pi 地址 数据 变量名 •如果能直接寻址那当然就不用间接寻址了, 但有时,只能用间接寻址的方法解决问题 ③ ▪ 数据类型:int *(指向 整型变量的指针) ▪ 变量名称:pi ▪ 变量的初值:&i ▪ 含义:向系统申请一个 动态区的内存空间,用 来存储整型指针变量pi的 初值&i,即将pi指向了变 量i。 ▪ 通过*pi这种形式,实现对变 量i的间接引用。 ② ① 2000 3
为什么引入指针的概念 指针有如下好处: 为函数提供修改变量值的手段 为C的动态内存分配系统提供支持 可以改善某些子程序的效率 为动态数据结构(如例链表、队列、二叉 树等)提供支持
5 为什么引入指针的概念 ▪ 指针有如下好处: ▪ 为函数提供修改变量值的手段 ▪ 为C的动态内存分配系统提供支持 ▪ 可以改善某些子程序的效率 ▪ 为动态数据结构(如例链表、队列、二叉 树等)提供支持