第8章 指针和引用
2021/2/24 1 第8章 指针和引用
指针和指针变量 指针的概念 1内存地址一内存中存储单元的编号 (1)计算机硬件系统的内存储器中,拥有大量 的存储单元(容量为1字节)。 为了方便管理,必须为每一个存储单元编号, 这个编号就是存储单元的“地址”。每个存储单 元都有一个惟一的地址。 (2)在地址所标识的存储单元中存放数据。 注意:内存单元的地址与内存单元中的数据是两 个完全不同的概念。 2021/224
2021/2/24 2 指针和指针变量 指针的概念 1.内存地址──内存中存储单元的编号 (1)计算机硬件系统的内存储器中,拥有大量 的存储单元(容量为1字节)。 为了方便管理,必须为每一个存储单元编号, 这个编号就是存储单元的“地址”。每个存储单 元都有一个惟一的地址。 (2)在地址所标识的存储单元中存放数据。 注意:内存单元的地址与内存单元中的数据是两 个完全不同的概念
2变量地址—系统分配给变量的内存单元的起始地址 假设有这样一个程序 void main (void)i int nume cin>>num; cout<"num=<<num<<“Ⅶn’; C+编译程序编译到该变量定义语句时,将变量 num登录到“符号表”中。符号表的关键属性有两个 是“标识符名(id)”,二是该标识符在内存空间 中的“地址(addr)” 为描述方便,假设系统分配给变量num的2字节存储 单元为3000和3001,则起始地址3000就是变量num在 内存中的地址。见下图。 2021/224
2021/2/24 3 2.变量地址──系统分配给变量的内存单元的起始地址。 假设有这样一个程序: void main(void){ int num; cin>>num; cout<<"num=“<< num<<‘\n’; } C++编译程序编译到该变量定义语句时,将变量 num 登录到“符号表”中。符号表的关键属性有两个: 一是“标识符名(id)” ,二是该标识符在内存空间 中的“地址(addr)” 。 为描述方便,假设系统分配给变量num的2字节存储 单元为 3000 和3001,则起始地址3000就是变量num在 内存中的地址。 见下图
3000 3001 3变量值的存取—通过变量在内存中的地址进行。系 统执行“cin>>num;”和“cout<<”num=”< num<<Ⅷn’;”时,存取变量num值的方式可以有两 种 (1)直接访问一直接利用变量的地址进行存取。 1)上例中cin>mm的执行过程是这样的: 用变量名num作为索引值,检索符号表,找到变 量uum的起始地址3000;然后将键盘输入的值(假设 为3)送到内存单元3000和3001中。此时,变量num 是内存中的地址和值。 2021/2/24
2021/2/24 4 3000 3001 3.变量值的存取──通过变量在内存中的地址进行。系 统执行“cin>>num;”和“cout<<”num=”<< num<<‘\n’;”时,存取变量num值的方式可以有两 种: (1)直接访问──直接利用变量的地址进行存取。 1)上例中cin>>num的执行过程是这样的: 用变量名num作为索引值,检索符号表,找到变 量num的起始地址3000;然后将键盘输入的值(假设 为3)送到内存单元3000和3001中。此时,变量num 是内存中的地址和值
2)cout<“num=”<<num<<mn?的执行过程,与cin 很相似: 首先找到变量num的起始地址3000,然后从3000 和3001中取出其值,最后将它输出 3000 3001 2021/224 5
2021/2/24 5 2) cout<<“num=”<< num<<‘\n’的执行过程,与cin 很相似: 首先找到变量num的起始地址3000,然后从3000 和3001中取出其值,最后将它输出。 3000 3 3001