第十章
第 十 章 指 针
目录 10.1指针的概念 10.7指针教组与指向 102指针变量的定 指针的指针 义和引用 108动态内存分配 103指针与数组 10.9本章程序举例 104指针与字符串 105指向函数的指针本章要点小结 10.6返回指针的函数
目 录 10.1 指针的概念 10.2 指针变量的定 义和引用 10.3 指针与数组 10.4 指针与字符串 10.7 指针数组与指向 指针的指针 10.6 返回指针的函数 10.5 指向函数的指针 10.8 动态内存分配 10.9 本章程序举例 本章要点小结 本 章 结 束
10.1指针的概念 指针是C语言的一个重要概念 也是C语言的一个重要特色。深刻理 解和正确使用指针是学习本章的基 本要求。 本章是一个难点,也是一个重 点,初学者不易掌握。在理解和熟 悉基本内容的前提下,上机实验是 必不可少的环节
10.1 指针的概念 指针是C语言的一个重要概念, 也是C语言的一个重要特色。深刻理 解和正确使用指针是学习本章的基 本要求。 本章是一个难点,也是一个重 点,初学者不易掌握。在理解和熟 悉基本内容的前提下,上机实验是 必不可少的环节
10.1指针的概念 地址 在计算机中,把内存区划分为一个一个的存储单 元,每个单元为一个字节(8位),它们都有一个编 号,这个编号就是内存地址。如下图所示 址:3注意:1、程序中定义的每个数据 在编译后都占有各自的内存区。 2003 2004 2、数据所占有的存储单元个数是 由其类型决定的。 3、首地址:第1个单元的地址 高地址 4、表示地址的数与整数的区别
10.1 指针的概念 一、地址 在计算机中,把内存区划分为一个一个的存储单 元,每个单元为一个字节(8位),它们都有一个编 号,这个编号就是内存地址。如下图所示: 注意:1、程序中定义的每个数据 在编译后都占有各自的内存区。 2、数据所占有的存储单元个数是 由其类型决定的。 3、首地址:第1个单元的地址 4、表示地址的数与整数的区别
10.1指针的概念 二、举例 如有定义: char c=A';inta=3; 则所占内存情况如下: c占一个 字节 注意:c和a的 存放的 01000001 是’A的 地址可能相邻, ASCIIHI 也可能不相邻, a占两个 字节 00000003 低字节是由系统分配 低字节 存放低8 000高字节的,我们不用 位;高 字节存 关 放高8位
10.1 指针的概念 二、举例 如有定义:char c=‘A’; int a=3; 则所占内存情况如下: 注意:c和a的 地址可能相邻, 也可能不相邻, 是由系统分配 的,我们不用 关心
10.1指针的概念 三、直接访问和间接访问 有两个上锁且放着物品的盒子A、B, 如果你有A盒子的钥匙,则可以直接打开A盒子 将物品取出; 如果你有B盒子的钥匙,而A盒子的钥匙在B盒 子中,要想取出A盒子中的物品,则必须先打开B盒 子,取出A盒子的钥匙,再打开A盒子将物品取出。 上面两种情况就是直接访问和间接访问的概念
10.1 指针的概念 三、直接访问和间接访问 有两个上锁且放着物品的盒子A、B, 如果你有A盒子的钥匙,则可以直接打开A盒子 将物品取出; 如果你有B盒子的钥匙,而A盒子的钥匙在B盒 子中,要想取出A盒子中的物品,则必须先打开B盒 子,取出A盒子的钥匙,再打开A盒子将物品取出。 上面两种情况就是直接访问和间接访问的概念
10.1指针的概念 1、直接访问 通过变量本身对变量进行存取的方式,称为 直接访问。 如定义:intx;则x=10;x+=5;等等 这种访问方式只需要变量本身就得到了该变 量的全部信息,不需要其它内容,是直接的
10.1 指针的概念 1、直接访问 通过变量本身对变量进行存取的方式,称为 直接访问。 如定义:int x; 则x=10; x+=5; 等等 这种访问方式只需要变量本身就得到了该变 量的全部信息,不需要其它内容,是直接的
10.1指针的概念 2、间接访问 通过指针变量实现对变量的访问方式,称为间接 访问。 首先要定义一个指针变量,然后将一个同类型变 量的地址赋给该指针变量(这时我们称指针变量指向 该变量),这样就可以进行间接访问了。 间接访问的过程是:由指针变量得到变量的地址, 根据该地址找到变量的存储区,再对该存储区的内容 进行存取,从而实现了对变量的间接访问
10.1 指针的概念 2、间接访问 通过指针变量实现对变量的访问方式,称为间接 访问。 首先要定义一个指针变量,然后将一个同类型变 量的地址赋给该指针变量(这时我们称指针变量指向 该变量),这样就可以进行间接访问了。 间接访问的过程是:由指针变量得到变量的地址, 根据该地址找到变量的存储区,再对该存储区的内容 进行存取,从而实现了对变量的间接访问
10.1指针的概念 四、指针与指针变量 1、指针:简单地说,指针就是地址。二者是同 个概念的两种说法。只不过指针更形象一些, 就像一个针一样,可以指向某个地方 2、指针变量:首先指针变量就是一个变量,和 我们以前所讲的其它变量没有本质区别。不同之 处在于这种变量中所存放的内容是地址
10.1 指针的概念 四、指针与指针变量 1、指针:简单地说,指针就是地址。二者是同 一个概念的两种说法。只不过指针更形象一些, 就像一个针一样,可以指向某个地方。 2、指针变量:首先指针变量就是一个变量,和 我们以前所讲的其它变量没有本质区别。不同之 处在于这种变量中所存放的内容是地址
10.2指针变量的定义和引用 指针变量的定义和赋值 格式:类型名指针变量名 2、举例 int *pI char *sl*s2 float *al, *a2, f; 3、说明 a.类型名:指针变量所指向的变量类型 b.*是定义指针变量的标志,不可丢掉。 c.指针变量定义后,其值是不确定的
10.2 指针变量的定义和引用 一、指针变量的定义和赋值 1、格式:类型名 *指针变量名; 2、举例 int *p1; char *s1, *s2; float *a1, *a2, f; 3、说明 a. 类型名:指针变量所指向的变量类型。 b. * 是定义指针变量的标志,不可丢掉。 c. 指针变量定义后,其值是不确定的