
第 8 章 指针主要内容·指针定义与基本操作
1 第 8 章 指针 主要内容 • 指针定义与基本操作

8.1、指针的概念通过前面学习,我们知道变量就是计算机中的一个容器可以放入数据进行处理,那这个容器在哪单呢?其实这个容器就是计算机的一小块内存,而数组是连续的几小块内存。与数组类似,计算机的内存是通过编号来进行标识的,所有内存其实就是一个超级大数组。而每个定义好的变量在整个内存组成的在超级大数组中,一定是占用了某个位置,这个位置的序号可以用取地址操作运算“&”得到,在c和c++中定义了一个新的数据类型来保存这个内存地址,那就是“指针”;Page2
Page 2 ◼ 通过前面学习,我们知道变量就是计算机中的一个容器, 可以放入数据进行处理,那这个容器在哪里呢?其实这个 容器就是计算机的一小块内存,而数组是连续的几小块内 存。与数组类似,计算机的内存是通过编号来进行标识的 ,所有内存其实就是一个超级大数组。 ◼ 而每个定义好的变量在整个内存组成的在超级大数组中, 一定是占用了某个位置,这个位置的序号可以用取地址操 作运算“&”得到,在C和C++中定义了一个新的数据类型 来保存这个内存地址,那就是“指针”; 8.1 、指针的概念

8.1、指针的概念任何变量都有一个内存地址,这种地址称为指针,而指针变量是一种存放内存地址的变量。每一个指针变量都有相应的数据类型,该类型用以说明指针所指内存单元中存放的数据的类型Page
Page 3 任何变量都有一个内存地址,这种地址称为指 针,而指针变量是一种存放内存地址的变量。每一 个指针变量都有相应的数据类型,该类型用以说明 指针所指内存单元中存放的数据的类型。 8.1 、指针的概念

8.2指针变量对内存单元的访问有两种方式>直接访问:直接根据变量名存取变量的值。>间接访问:将变量的地址存放在指针变量中,当要对变量进行存取时,首先读取指针变量的值,得到要存取变量的地址,再对该变量进行访问。10变量i(间接访问)10001020指针变量p(直接访问)-1000Page
Page 4 8.2 指针变量 对内存单元的访问有两种方式: ➢直接访问:直接根据变量名存取变量的值。 ➢间接访问:将变量的地址存放在指针变量中,当要 对变量进行存取时,首先读取指针变量的值,得到要 存取变量的地址,再对该变量进行访问。 1000 变量i 1020 . . . 1000 . . . 10 . . . 指针变量p(直接访问) (间接访问)

8.3地址和指针用户数据区内存存储单元的内容int i;char ch;1000i占据2字节float f;11001ch占据1字节?i= 1;1002Ach =‘A';1003f = 2.5;10042.5f占据4字节1005100616位操作.存储单元的地址(指针)系统为例Page5
Page 5 8.3 地址和指针 int i; char ch; float f; . . . . . . 用户数据区内存 1000 1002 1003 1001 1004 1005 1006 i占据2字节 ch占据1字节 f占据4字节 存储单元的地址(指针) i = 1; ch = ‘A’; f = 2.5; 1 2.5 A 存储单元的内容 16位操作 系统为例

8.3指针和地址>存储单元:存放一个字节数据的存储器。>存储单元的内容:存储单元中存放的数据。>存储单元的地址:存储单元的编号。>变量的首地址:变量占据的连续存储单元的起始地址,简称变量的地址。>指针:存储单元的地址。Page
Page 6 8.3 指针和地址 ➢存储单元:存放一个字节数据的存储器。 ➢存储单元的内容:存储单元中存放的数据。 ➢存储单元的地址:存储单元的编号。 ➢变量的首地址:变量占据的连续存储单元的起始地 址,简称变量的地址。 ➢指针:存储单元的地址

指针变量我们将专门用来存放内存单元地址的特殊变量称为指针变量”。当把某个变量的地址存入指针变量p后,我们就说这个指针变量p指向该变量i。指针变量p整型变量iint i= 10, *p;100010指向p=&i;1000i的地址存入p指针与指针变量的区别,就是变量值与变量的区别即指针变量的值是指针Page
Page 7 指针变量 我们将专门用来存放内存单元地址的特殊变量称为 “指针变量” 。当把某个变量i的地址存入指针变量 p后,我们就说这个指针变量p指向该变量i。 指针变量p 10 整型变量i 1000 1000 指向 i的地址存入p int i = 10, *p; p = &i; 指针与指针变量的区别,就是变量值与变量的区别, 即指针变量的值是指针

8.4指针变量的定义>定义格式:类型说明符*指针变量名:其中类型说明符指的是指针变量所指向变量的数据类型,“*”表示随后的变量是指针变量。例如: int *ptrl; →> int* ptrl;char *ptr2; char* ptr2;ptr1是指向整型变量的指针变量,专门用来存放整型变量的地址ptr2是指向字符型变量的指针变量,专门用来存放字符型变量的地址。Page
Page 8 8.4 指针变量的定义 ➢定义格式: 类型说明符 *指针变量名; 其中类型说明符指的是指针变量所指向变量的数据类 型, “*”表示随后的变量是指针变量。 例如:int *ptr1; ➔ int* ptr1; char *ptr2; ➔ char* ptr2; ptr1是指向整型变量的指针变量,专门用来存放整型 变量的地址。 ptr2是指向字符型变量的指针变量,专门用来存放字 符型变量的地址

8.4指针变量的定义>说明:1)指针变量中只能存放地址(指针),不能和“整型”变量混淆。int*p=NULL;int*Pint*;p =newint[2];YESNOP=NULL ;*p= 16;P=10;指针变量可以取值为O(NULL),表示该指针变量不指向任何变量2)指针变量只能存放与它数据类型相同的变量的地址。int *p;int*P;YESint ch=10;char ch='a';NO&ch;P=p =&ch;PageO
Page 9 8.4 指针变量的定义 ➢说明: 1)指针变量中只能存放地址(指针), 不能和 “整型” 变量混淆。 指针变量可以取值为0(NULL),表示该指针变量不指向任何变量。 2)指针变量只能存放与它数据类型相同的变量的 地址。 NO NO YES YES

8.5与指针有关的运算符有两个与指针有关的运算符:取地址运算符“&”和指针运算符“*”;运算符“&”用于取一个变量的地址;运算符“*”以一个指针作为其操作数,其运算结果表示所指向的变量:“&”运算和“*”运算互为逆运算指针的移动:(+/-)移动距离,++往后,一一往前;Page10
Page 10 ◼ 有两个与指针有关的运算符:取地址运算符 “&”和指针运算符“*” ; ◼ 运算符“&”用于取一个变量的地址; ◼ 运算符“*”以一个指针作为其操作数,其运 算结果表示所指向的变量; ◼ “&”运算和“*”运算互为逆运算。 ◼指针的移动: (+/-)移动距离,++ 往后,-往前; 8.5 与指针有关的运算符