- 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程序设计 第十章 指针 讲授 张瑞桃 Tel:第10章 指针 指针是C语言中的重要概念,也是C语言的重要特色。使用指针,可以使程序更加简洁、紧凑、高效。 指针是一种特殊的数据类型。 10.1 地址和指针的概念 一 内存单元的地址──内存中存储单元的编号 (1)计算机硬件系统的内存储器中,拥有大量的存储单元(单位为1字节)。 为了方便管理,必须为每一个存储单元编号,这个编号就是存储单元的“地址”。每个存储单元都有一个惟一的地址。 (2)在地址所标识的存储单元中存放数据。 注意:内存单元的地址与内存单元中的数据是两个完全不同的概念。 二 变量地址──系统分配给变量的内存单元的起始地址 假设程序有如下语句: int i=3; float k=5; scanf(%d,i); printf(%d,i); C编译程序编译到该变量定义语句时,将变量i,k 登录到“符号表”中。符号表的关键属性有两个:一是“标识符名(id)” ,二是该标识符在内存空间中的“地址(addr)” 。 为描述方便,假设系统分配给变量 i 的2字节存储单元为 2000 和2001,则起始地址2000就是变量 i 在内存中的地址。 三 变量值的存取──通过变量在内存中的地址进行 系统执行“scanf(%d,i);”和“printf(%d, i);”时,存取变量 i 值的方式可以有两种: 1. 直接访问──直接利用变量的地址进行存取 1)上例中scanf(“%d”,i)的执行过程是这样的: 用变量名 i 作为索引值,检索符号表,找到变量 i 的起始地址2000;然后将键盘输入的值(假设为3)送到内存单元2000和2001中。此时,变量 i 在内存中的地址和值,如图10-1所示。 2)printf(num=%d,i)的执行过程,与scanf()很相似: 首先找到变量 i 的起始地址2000,然后从2000和2001中取出其值,最后将它输出。 2 间接访问──通过另一变量访问该变量的值 “间接访问”方式:将变量(例如:i)的地址存放在另一个变量中,这个变量存放地址(相对于整型、实型、字符型变量等),它是一种特殊类型变量 如,假设定义了这样一变量i_pointer,它被分配到3010、3011单元,其值可通过赋值语句 “i_pointer=&i;” 得到。此时,指针变量i_pointer的值就是变量i在内存中的起始地址2000,P220如图10-1所示。 通过指针变量i_pointer存取变量i值的过程如下: 首先找到指针变量i_pointer的地址(3010),取出其值2000(正好是变量i 的起始地址); 然后从2000、2001中取出变量i的值(3)。 10.1 地址和指针的概念 10.1 地址和指针的概念 四 指针、指针变量 指针:一个变量的地址(常量)。 指针变量:专门存放另一变量地址(指针)的变量叫指针变量。 指针变量的值是指针。 i_pointer是指针变量,其值是指针(地址),是整型变量i的地址,i的值是整型数3。 变量的指针就是变量的地址,存放另一变量地址(指针)的变量叫指针变量。 “*” 表示指向 若i_pointer=i; i =3; *i_pointer=3 10.2 变量的指针和指向变量的指针变量 一 定义指针变量 一种存放变量地址的新的数据类型:指针类型 一般形式: [存储类型] 数据类型 *指针变量名; 一般形式: [存储类型] 基类型 *指针变量名; 基类型:指定该指针变量可以指向的变量的类型。 例: int i,*p1,*p2; float *q ; static char *name; 注意: 1.指针变量可以与其他变量一起定义, 如:int *p1, *p2; 与 int *p1, p2; 10.2 变量的指针和指向变量的指针变量 2.指针变量名是p1,p2 ,不是*p1,*p2, “*” 表示该变量的类型为指针型变量。 3. 指针变量只能指向定义时所规定类型的变量; 指针变量的类型名与指向目标的数据类型一致。 int *p, a; float b, *q; p=b; q=a; /* 错误 */ 4. 指针变量定义后,变量值不确定,应用前必须先赋值. P203 pointer_1=i; pointer_2=j; 5.
您可能关注的文档
- 2010公务员面试答题套路总结.ppt
- 2011年陈印二级建造师法规讲义.ppt
- 2010广外英语写作与翻译.doc
- 2011年初中分数线.doc
- 2010湖南信用社真题回忆版.doc
- 2011年第六版核心期刊要目总览,2012年经济类核心期刊目录.doc
- 2010江苏高考前夜数学提速训练部分简化.ppt
- 2010江苏高考前夜重点知识最后回放.ppt
- 2010届高考化学易错题解题方法.doc
- 2010届高考历史线索复习打包.doc
- 2025年CPU芯片行业现状分析报告及未来五至十年发展前景预测报告.docx
- 2025年反击式破碎机行业现状分析报告及未来五至十年发展前景预测报告.docx
- 2025年电机碳刷电刷行业现状分析报告及未来五至十年发展前景预测报告.docx
- 2025年程控电话交换机行业现状分析报告及未来五至十年发展前景预测报告.docx
- 跨境电商平台用户增长黑客案例:2025年市场趋势洞察.docx
- 2025年crm软件行业现状分析报告及未来五至十年发展前景预测报告.docx
- 2025年驰返变压器行业现状分析报告及未来五至十年发展前景预测报告.docx
- 2025年电教设备行业现状分析报告及未来五至十年发展前景预测报告.docx
- 2025年半化学瓦楞原纸行业现状分析报告及未来五至十年发展前景预测报告.docx
- 优秀建筑方案设计.docx
文档评论(0)