从从从岸座从岸从尿从从尿》8∥《从8 语 程序设计 制作刘金莲
第一章C语言概述 ·第二章数据类型、运算符与表达式 ·第三章最简单的c程序设计 第四章逻辑运算和判断选取控制 ·第五章循环控制 第六章数组 ·第八章编译预处理 第九章指针 第十章结构体与共用体 第十二章文件的基本操作 第十三章位运算
• 第一章 C语言概述 • 第二章 数据类型、运算符与表达式 • 第三章 最简单的C程序设计 • 第四章 逻辑运算和判断选取控制 • 第五章 循环控制 • 第六章 数组 • 第八章 编译预处理 • 第九章 指针 • 第十章 结构体与共用体 • 第十二章 文件的基本操作 • 第十三章 位运算
第九章指针
通过前面的学习,我们已知道: C程序的变量所存放的数据: 数值型数据:整数、实数 字符型数据:字符、字符串 结构型数据:数组、结构体、共用体 c語醒设计
C程序的变量所存放的数据: 数值型数据:整数、实数 通过前面的学习,我们已知道: 字符型数据:字符、字符串 结构型数据:数组、结构体、共用体
这些变量具有的性质: 占有一定长度的内存单元 如:intx;ⅹ占二字节、二个单元 每一个变量都有一个地址,为无符号整数, 它不同于一般的整数。 §问题:能否对地址运算? 能否用一个变量保存地址? c語醒设计
占有一定长度的内存 单元 如:int x; x占二字节、二个单元 每一个变量都有一个地址,为无符号整数, 它不同于一般的整数。 问题: 能否对地址运算? 能否用一个变量保存地址? 这些变量具有的性质:
§91指针的概念 数据在内存中的存放 内存:为一个连续编号(连续地址)且以一个 单元为一个字节的连续存贮区 2000 若程序中定义了三个nt变量i,jk 2001 2002 inti=-5,j=5,k=10 2003 20410}k设:系统分配的起始地址为200单元 则:j的起始地址有可能为为2002的单元 30012000 k的起始地址有可能为2004的单元 c語醒设计
§9.1 指针的概念 一、数据在内存中的存放 设:系统分配i的起始地址为2000的单元 内存:为一个连续编号(连续地址)且以一个 单元为一个字节的连续存贮区。 若程序中定义了三个int变量i, j, k int i= – 5, j=5, k=10; 则: j的起始地址有可能为为2002的单元 k的起始地址有可能为2004的单元 2000 2001 2002 2003 2004 2005 3001 – 5 +5 10 2000 i j k
当程序中要用它们的值时: y=ltJ+k 则系统通过一张变量名与地址对应关系表: 分别找到地址2000, 将2000,2001中的数据_5读出; 找到j的地址2002, 将2002,20003中的数据5读出; 找到k的地址2004, 将2004,2005中的数据10读出。 c語醒设计
当程序中要用它们的值时: y=i+j+k; 找到j的地址2002, 将2002,20003中的数据5读出; 找到k的地址2004, 将2004,2005中的数据10读出。 分别 找到i的地址2000, 将2000,2001中的数据–5读出; 则系统通过一张变量名与地址对应关系表:
然后把这些数据进行算术运算 上述过程称为变量的“直接访问” 直接访问:直接使用存放该数据的变量名。 使用变量 相当于使用-5 间接访问:如果将某一变量的地址(如的地址2000 存放到另一个变量x,则可通过x来存 取道值 c語醒设计
直接访问:直接使用存放该数据的变量名。 间接访问:如果将某一变量的地址(如i的地址2000) 存放到另一个变量x,则可通过x来存 取i的值。 上述过程称为变量的“ 直接访问” 然后把这些数据进行算术运算。 使用变量 i 相当于使用 −5
如:用pi,pipk来存放i,jk的地址 3001 2000pl 2000 3003 2002 2002p 55 3005 2004pk 2004 10-k 3007 若要得到变量的值,可以先访问pi,得到i的 地址,再通过该地址找到它i的值 c語醒设计
如:用pi, pj, pk来存放i, j, k的地址 2000 2002 2004 − 5 5 10 3001 3003 3005 3007 2000 2002 2004 pi pj pk i j k 若要得到变量i的值,可以先访问pi,得到i的 地址,再通过该地址找到它i的值
显然,pi与i是通过的地址联系起来的。 定义:一个变量的地址称为该变量的指针 因此,i指针的值为2000。 而存放地址(指针)的变量叫做指针变量 如:pi就是指针变量。 c語醒设计
显然,pi与i是通过i的地址联系起来的。 定义:一个变量的地址称为该变量的指针。 因此,i的指针的值为2000。 如:pi就是指针变量。 而存放地址(指针)的变量叫做指针变量