- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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语言规定: 数组名代表数组的首地址,也就是第一个
您可能关注的文档
最近下载
- 关于医院 “十四五” 五年发展规划方案.docx VIP
- 初中信息技术 电子表格处理软件Excel 2003电子教案.docx VIP
- KA_T 20.2—2024 非煤矿山建设项目安全设施设计编写提纲 第2部分:金属非金属露天矿山建设项目安全设施设计编写提纲.docx
- 高三英语二轮复习读后续写: 如何让对话描写更加传神 课件.pptx VIP
- 国家公务员行测判断推理(逻辑判断)模拟试卷9(共265题).docx VIP
- 人音版四年级上册音乐全册教学设计教案.pdf
- 部编版四年级下册《道德与法治》全册教案(表格式)_可搜索.pdf VIP
- 2024年首届全国“红旗杯”班组长大赛考试题库1400题(含答案).docx VIP
- 2025年高中英语教研组工作计划样本(二篇) .pdf VIP
- 教育心理学全套PPT课件.pptx VIP
文档评论(0)