- 1、本文档共157页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第9章;第9章指针及其应用;9.1指针的引入;9.1.1问题与引例;指针是存放内存地址的一种变量类型,也就是说,指针这个变量是用来说明某个变量在内存中的位置,也可以认为指针是指向另一个变量的变量。
指针是C语言的重要特色,也是C语言的精华。;指针的主要功能与特点:
正确灵活地运用指针可以有效地表示复杂的数据结构,方便地使用数组和字符串;
可以在函数间进行数据传递;
可以直接处理内存地址、动态分配内存;
可以设计出结构紧凑、效率更高的应用程序。;9.2指针与指针变量;9.2.1地址与指针;1.内存的地址
程序运行时,程序的所有代码和数据都要事先被调入内存,由操作系统为它们分配特定的内存空间。
内存是以字节为单位的一片连续存储空间,为了便于访问,给每个字节一个唯一的编号,这些单元编号称为内存单元的“地址”。系统的内存就像是带有编号???小房间,使用内存就需要得到房间编号。
变量的数据就存放在地址所标识的内存单元中,变量中的数据其实就相当于仓库中各个房间存放的货物。;1.内存的地址
系统的内存就像是带有编号的小房间,使用内存就需要得到房间编号。
定义一个整型变量i,整型变量需要4个字节,所以编译器就为变量i分配编号1000到1003。;1.内存的地址
地址是内存区中对每个字节的编号。下图中的1000,1004等就是内存单元的地址,而0,1则是内存单元的内容,也就是说基本整型变量i在内存中的地址是从1000开始的。问变量j的地址是什么?;2.变量的地址
一般微机使用的C语言系统为整型变量分配2个字节(C++中整型变量占用4个字节),为实型变量分配4个字节,为字符型变量分配1个字节,为双精度类型变量分配8个字节。当某一变量被定义后,其内存中的地址也就确定了。
思考:变量在内存中是如何存放的?又是如何使用的呢?;【例9.1】不同类型的变量的存储形式。
#includestdio.h
voidmain()
{inti=5,j=10;//定义整型变量i,j,并赋值为5和10
floatx=0.618,y=3.14159;//定义x,y,并赋值为0.618和3.14159
charc1=m,c2=N;//定义c1,c2,并赋值为m和N
int*p1,*p2;//定义指向整型变量的指针变量p1,p2
p1=i;p2=j;//将p1指向i,p2指向j
printf(i=%d,j=%d\n,i,j);
printf(x=%f,i=%d\n,x,*p1);
};inti=3,j=6,k;;3.寻址方式
有了指针,对变量访问有直接寻址和间接寻址两种方式。
(1)直接寻址
直接寻址是指直接利用变量名进行存取的方式。
(2)间接寻址
间接寻址是将变量的地址存放在另一种类型的变量中,通过这种新的变量类型来得到变量的值。;inti=3,j=6,k;;inti=3,j=6,k;;;4.指针和指针变量
指向就是通过地址来体现的,一个变量的地址称为该变量的“指针”。
例如,地址2000是变量i的指针
如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”
例如:i_pointer就是一个指针变量。指针变量就是地址变量,用来存放地址的变量,指针变量的值是地址(即指针)。;注意:“指针”和“指针变量”是不同的概念
可以说变量i的指针是2000,而不能说i的指针变量是2000
指针是一个地址,而指针变量是存放地址的变量。;9.2.2创建指针;9.2.2创建指针;9.2.3指针变量赋值;9.2.3指针变量赋值;9.2.3指针变量赋值;9.2.3指针变量赋值;9.2.3指针变量赋值;9.2.3指针变量赋值;9.2.3指针变量赋值;9.2.4指针变量的运算;9.2.4指针变量的运算;9.2.4指针变量的运算;9.2.4指针变量的运算;【例9.3】指针运算符的运用。
#includestdio.h//头文件
voidmain()//主函数
{
inti;//声明普通变量
int*pi;//声明指针变量
pi=i;//指针变量赋值
i=10;//普通变量i赋初值
printf(i=%d\t*pi=%d\n,i,*pi);//输出变量值及指针所指向变量的值
您可能关注的文档
- 第9章 跨境电子商务.pptx
- 第9章 流动负债1.pptx
- 第9章 其他税税法(印花税法和契税法).pptx
- 第9章 其他特种加工.pptx
- 第9章 气压传动基础.pptx
- 第9章 税收征收管理法.pptx
- 第9章 投资性房地产.pptx
- 第9章 网络营销.pptx
- 第9章 现金流量分析.pptx
- 第9章 信号发生电路.pptx
- 局部遮阴下光伏阵列MPPT技术的优化与创新研究.docx
- 武警初级指挥院校语文教学:现状剖析与优化策略.docx
- 蔡澄清语文教学思想的深度剖析及其对当代语文教育的启迪.docx
- 破茧与新生:初中语文课外课程资源开发利用新探.docx
- 水利工程中PVC板桩的性能评估与寿命预测研究.docx
- 上海师范大学体育硕士专业学位研究生培养的多维审视与优化策略.docx
- 多维视角下山东日韩企业职工体育健身活动保障机制构建研究.docx
- 多元视角下高中信息技术课程学生学业评价体系的构建与创新研究.docx
- 英语法律条文中模糊语言的多维度解析与价值探寻.docx
- 形状记忆合金超细丝电阻传感特性:试验与理论的深度剖析.docx
文档评论(0)