C语言程序的设计经典的教程class8.ppt

C语言程序的设计经典的教程class8.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序的设计经典的教程class8

* 第八章 指针 主要内容 8.1 指针和指针变量 8.2 指针与数组 8.3 字符串的指针 重点 熟练掌握指针的定义和引用;掌握用指针来处理数组;掌握用指针来处理字符。 * A 直接 B A 间接 预备知识 直接和间接的含义 内存 即内部存储器,是由内存单元组成 特点 存储单元的最小单位为字节 存储单元是线性连续的 …… …… * 内存 计算机的内存中的每一个字节都有一个编号 每一内存单元具有唯一的内存地址 系统为每一个已定义的变量分配一定存储空间 使变量名与内存的一个地址相对应 通过地址就能够访问该地址所标识的存储单元 程序处理过程 根据地址取出变量所对应的内存单元中存放的值 参与计算/操作 处理结果存入相应的变量名所对应的内存单元 …… …… 0 1 2 3 … 2000 地址 45 变量内容 * 高级语言中的变量具有三个属性 变量的名 变量的值 变量的地址 编程者使用c程序的一个变量 定义变量的数据类型 数据类型决定了一个变量在内存中所占用的存储空间的大小 变量在内存中总是占用几个连续的字节 定义变量名 C语言的编译系统会根据变量的数据类型为该变量分配内存单元 确定变量的地址 变量的地址就是为变量分配的内存单元的起始编号 通过变量名对内存中变量对应的地址进行操作 C语言如何处理? * 指针的概念 int a,b,c; a=10; b=20; c=a+b; 1000 1002 1004 内存 a b c 10 20 30 正常解释 实际情况 1000 1002 1004 内存 变量名 内存单元的起始地址 长度 内存地址与变量对照表 a b c 1000 2 1002 2 1004 2 10 20 10 20 30 在使用变量时总要去查表,降低了运行效率,也颇感不便。 解决方案 p 1000 这是变量a的地址 这是变量,存放的是变量a的地址——指针变量。 8.1 指针和指针变量 * 指针变量的定义 一般形式为:类型符 *指针变量名; 如: int *p; int *q,*r; float a,*b; char *s1,s2; p、q、r、b、s1均为指针变量;a、s2为普通变量。 约定: 指针变量的图形表示,如:int *p; 普通变量的图形表示,如:int a; ↙ p a * 指针变量的引用 两种基本的指针运算: :取变量的地址 * :指针运算符(或称“间接访问”运算符) 如: int a=10,*p; p=a; printf(“%d,%d”,a,*p); 输出:10,10 ↙ 10 p a a 直接访问 间接访问 * [例8.1] 通过指针变量存取变量的值。 main() { int a,b; int *p1,*p2; printf(“a=%d,b=%d\n”,a,b); printf(“*p1=%d,*p2=%d\n”,*p1,*p2); } a=10; b=20; p1=a; p2=b; p1=a; p2=b; a=10; b=20; 程序1 程序2 程序3 程序4 p1=a; p2=b; *p1=10; *p2=20; *p1=10; *p2=20; p1=a; p2=b; a b ↙ p1 ↙ p2 10 20 a b 10 20 a b 10 20 a b ??? !!! ! 使用指针之前,一定要使指针有明确指向。 ! 指针变量未存储确定地址时,不能使用, 否则会造 成系统的崩溃! * [例8.2] 输入a和b两个数,按先大后小的顺序输出,a和b的值不变。 main() { int a,b,*p1,*p2,*p; scanf(“%d,%d”,a,b); p1=a; p2=b; if(ab) { p=p1; p1=p2; p2=p; } printf(“a=%d,b=%d\t”,a,b); printf(“Max=%d,Min=%d\n”,*p1,*p2); } a b ↙ p1 ↙ p2 ↙ p 10 20 a b a b a 输出:a=10,b=20 Max=20,Min=10 * 6.2 指针与数组 指针与数组的关系 一个变量有地址,一个数组元素包含若干个数组元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址,这个地址就可以用指针来实现存储。 如有: int a[5]; int *p,*q; p=a[0]; q=a[2]; *p=5; *q=8; a[0] a[1] a[2] a[3] a[4] p ↙ ↙ q a[0] a[2] 5 8 * C语言规定: 数组名代表数组的首地址,也就是第一个

文档评论(0)

shaoye348 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档