第10章指针 指针是C语言的精华也是C的一个重要特色 指针是C语言中广泛使用的一种数据类型。 ©利用指针变量可以访问各种数据结构; ·利用指针能很方便地使用数组和字符串; ©利用指针能编出精练而高效的程序。 本章是难点,也是重点,初学者不易掌握。在理解 和熟悉基本内容前提下,上机编程是必不可少环节
第10章 指针 指针是C语言的精华也是C的一个重要特色 指针是C语言中广泛使用的一种数据类型。 利用指针变量可以访问各种数据结构; 利用指针能很方便地使用数组和字符串; 利用指针能编出精练而高效的程序。 本章是难点,也是重点,初学者不易掌握。在理解 和熟悉基本内容前提下,上机编程是必不可少环节
10.1.指针的基本概念 指针是变量的地址,变量的地址就是内存地址。 1、内存地址 在计算机中,把内存区划分为一个一个的存储单元, 每个单元为一个字节(8位),它们都有一个唯 的编号,这个编号就是唯一的内存地址。 低地址 个字节 注意:1、程序中定义的每个数据在编译 76543210 后都占有各自的内存区。 2002 2003 2、数据所占有的存储单元个数是由其类 2004 型决定的。 3、首地址:第1个单元的地址, 3000 4、内存单元的地址与单元的数据区别: 高地址 5、系统通过变量名对内存单元访问
指针是变量的地址,变量的地址就是内存地址。 1、内存地址 在计算机中,把内存区划分为一个一个的存储单元, 每个单元为一个字节(8位),它们都有一个唯一 的编号,这个编号就是唯一的内存地址。 注意:1、程序中定义的每个数据在编译 后都占有各自的内存区。 2、数据所占有的存储单元个数是由其类 型决定的。 3、首地址:第1个单元的地址, 4、内存单元的地址与单元的数据区别: 5、系统通过变量名对内存单元访问 10.1.指针的基本概念
内存单元中存放的数据。例:inta=300;char c=a?; 1000 300 变量a 1002 97 变量c 2、变量地址 定义一个变量,系统会根据变量的类型分配 内存单元。 内存单元的首地址,就是变量的地址。 变量的值:即变量所在内存单元的内容
2、变量地址 内存单元中存放的数据。例:int a=300; char c=‘a’; . 变量a 变量c 1000 1002 300 97 定义一个变量, 系统会根据变量的类型分配 内存单元。 内存单元的首地址,就是变量的地址。 变量的值: 即变量所在内存单元的内容
程序片段 int a,b,c; 2000 a=1; 利用变量名,直 2002 b=2; 直接将整 2004 -1 a 接存取变量值的方式 -2006-=2 b 直接将整 称为“直接访间” 2008 1y3 直接将父量a、b的值 取出,相加后存入变量c “直接访问”方式:按变量地址存取变量值的方式 “间接访问”方式:通过指针变量访问变量值
int a,b,c; a=1; b=2; c=a +b; 程序片段 2000 2002 2004 2006 2008 a b c 直接将整数 1 1 存入变量 a 2 直接将整数2 存入变量 b 3 直接将变量 a、b 的值 取出,相加后存入变量 c 利用变量名,直 接存取变量值的方式 称为“直接访问” 。 “直接访问”方式:按变量地址存取变量值的方式 “间接访问”方式:通过指针变量访问变量值
直接访问和间接访问 有两个上锁且放着物品的盒子A、B, 如果你有A盒子的钥匙,则可以直接打开A盒子 将物品取出; 如果你有B盒子的钥匙,而A盒子的钥匙在B盒 子中,要想取子中 品,刚必须先B盒 子,取出A盒的钱匙,手 打开将物段出。 上面两种情况就是直接访问和间接访问的概念。 间接访问的过程是:由指针得到变量的地址,根 据该地址找到变量的存储区,再对该存储区的内容进 行存取,从而实现了对变量的间接访问
打个比方 直接访问和间接访问 有两个上锁且放着物品的盒子A、B, 如果你有A盒子的钥匙,则可以直接打开A盒子 将物品取出; 如果你有B盒子的钥匙,而A盒子的钥匙在B盒 子中,要想取出A盒子中的物品,则必须先打开B盒 子,取出A盒子的钥匙,再打开A盒子将物品取出。 上面两种情况就是直接访问和间接访问的概念。 间接访问的过程是:由指针得到变量的地址,根 据该地址找到变量的存储区,再对该存储区的内容进 行存取,从而实现了对变量的间接访问