c语言程序设计与项目实践第9章.ppt

c语言程序设计与项目实践第9章.ppt

ID:55827808

大小:1.58 MB

页数:42页

时间:2020-06-09

c语言程序设计与项目实践第9章.ppt_第1页
c语言程序设计与项目实践第9章.ppt_第2页
c语言程序设计与项目实践第9章.ppt_第3页
c语言程序设计与项目实践第9章.ppt_第4页
c语言程序设计与项目实践第9章.ppt_第5页
资源描述:

《c语言程序设计与项目实践第9章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章指针本章的学习重点:◆指针的定义◆指针与地址的关系◆指针与数组◆指针与函数◆指针与字符串◆指针与二维数组◆内存分配9.1指针的引入C语言中,有时希望通过某个参数去操控其他变量或者复杂结构类型,为满足这一需求,便引入了指针。使用指针变量可以构造和查找各种数据类型和数据结构,能够直接查找并存取内存中所存储的数据,从而编出精练而高效的程序。9.1.1指针的定义C语言中,为了便于直接与硬件进行交互,有时需要在程序中访问这些内存单元,通常把能够标示内存单元的地址称为指针。C语言中通常使用指针变量来实现指针的应用。定义指针

2、变量的格式为:类型说明符*变量名;或者将*号放于变量名前:类型说明符*变量名;例如:int*pointer1;//定义一个指向int型变量的指针float*poniter2;//定义一个指向float型变量的指针char*_charac;//定义一个指向char型变量的指针9.1.2指针的引用指针的引用是指如何对指针变量赋值以及如何使用指针变量。范例9.1VariableAddressPrint.c显示一个变量在计算机里的位置,即它在内存中的物理地址,使用取地址符&获取变量的地址,并打印在屏幕上。范例9.2Point

3、erAndAddress.c使一个指针变量指向一个普通变量,分别将指针和变量的值显示出来,以对比他们的关系与差别。变量me和指针point_you的映射关系:范例9.3PointerChangeVariableValue.c利用指针修改变量的值,实现方法为首先使指针指向要修改的变量,然后使用解引用操作符*修改变量的值,使变量的值增1。9.2指针和地址指针和地址即有联系又有区别,指针变量可以存储内存地址,但指针又不单单是固定地址的储藏室。在程序运行过程中,指针变量的值是可以任意变化的,也就是说指针在程序运行过程中具有动

4、态读取内存地址的功能。9.2.1指针和地址的关系地址是对计算机内存进行的连续编号,指针是地址的操作者和使用者。如图所示为某段计算机内存示意图。1.指针与变量的作用域指针与其所指变量的作用域不同,将导致程序对指针的引用出现错误。范例9.4VariableFunctionArea.c指针指向不同类型的变量将产生不同的结果,将short型的指针指向一个int型变量,打印出指针值、变量地址值和变量值,分析打印的结果。9.2.1指针和地址的关系2.强制类型转换对指针作用域的影响当使用指针和变量地址索引同一内存区域的数据读取时,

5、要使用强制类型转换来查找内存数据。将范例9.4中程序第7行做如下修改:printf("a=%x,*b=%x,&a=%x,b=%x",a,*(int*)b,&a,b);内存执行状态如图所示:3.强制类型转换对变量作用域的影响将范例9.4中程序第7行作如下修改:printf("a=%x,*&a=%x,*(short*)&a=%x,&a=%x,b=%x",a,*&a,*(short*)&a,&a,b);执行状态如右图所示:9.2.1指针和地址的关系4.使用指针修改内存单元数据指针和地址可以读取内存单元部分数据,也可

6、以使用指针或取地址操作更改内存单元的部分数据。C语言的指针和地址具备对内存单元的写权限。范例9.5PointerChangeMemoryValue.c:演示使用指针修改内存数据,将指针指向非该指针类型的变量,通过符号*对指针所指内存进行读写,将读写前后的数值打印到屏幕上。变量b的执行状态如图所示:变量b的内存结构如图所示:9.2.2指针和地址的区别指针和地址的区别在于:地址是一个表征计算机系统内存单元的常量,其值是不能变化的,而指针则是可以等于任何地址值的变量。范例9.6PoniterAdd1Self.c:指针变量的

7、增和减不同于一般变量,它根据指针类型的不同而不同,设置一个short型指针,使其指向int型变量,改变该指针的值,查看它所指的内存区域中所存的数值。指针ap的内存变化如图所示:9.2.2指针和地址的区别对指针变量作增减运算,其值的变化与该变量的类型有关,下表列举了几种常用指针类型作自增1运算后其值的变化。指针类型初始值增1运算后减1运算后内存字节跨度char0x0012ff7c0x0012ff7d0x0012ff7b1short0x0012ff7c0x0012ff7e0x0012ff7a2int0x0012ff7c0

8、x0012ff800x0012ff784long0x0012ff7c0x0012ff800x0012ff784float0x0012ff7c0x0012ff800x0012ff784double0x0012ff7c0x0012ff840x0012ff7489.2.3void指针和空指针空指针(NULL)是不指向任何有效地址的指针,即空指针不指向

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。