新编C语言程序设计教程第9章指针课件.pptx

上传人:太** 文档编号:97185873 上传时间:2024-04-29 格式:PPTX 页数:34 大小:2.58MB
返回 下载 相关 举报
新编C语言程序设计教程第9章指针课件.pptx_第1页
第1页 / 共34页
新编C语言程序设计教程第9章指针课件.pptx_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《新编C语言程序设计教程第9章指针课件.pptx》由会员分享,可在线阅读,更多相关《新编C语言程序设计教程第9章指针课件.pptx(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、新编C语言程序设计教程PPT第9章指针课件指针的基本概念指针与数组指针与函数动态内存分配指针与结构体指向指针的指针指针的基本概念0103指针变量在声明时必须指定所指向变量的类型。01指针是一种变量,用于存储内存地址。02通过指针可以间接访问存储单元。指针的定义指针变量的声明与初始化声明指针变量使用*声明符来声明指针变量,例如int*p;声明了一个指向整数的指针变量p。初始化指针变量将变量的地址赋值给指针变量,例如intx=10;int*p=&x;,这里p指向了变量x的地址。取地址运算符&用于获取变量的地址。例如&x表示变量x的地址。指针算术运算指针可以与整数进行加减运算,例如p+1表示指针向后

2、移动一个单位(通常是数据类型的大小),p-1表示指针向前移动一个单位。指针也可以进行减法运算,例如p2-p1,表示两个指针之间的距离。指针比较运算可以比较两个指针是否相等或不等,或者判断一个指针是否大于、小于或等于另一个指针。例如if(p=q)表示判断两个指针是否相等。指针的运算指针与数组02123数组名本质上是指向数组第一个元素的指针。数组名可以作为指向数组的指针。数组指针可以指向数组中的任意元素。数组的指针通过指针访问数组元素01使用指针访问数组元素时,需要先计算出元素在内存中的偏移量。02通过指针的加法或减法运算,可以访问数组中的任意元素。使用指针访问数组元素比使用下标访问更加灵活,但需

3、要注意内存地址的计算。03指针与字符串字符串在C语言中通常表示为字符数组,因此可以通过指针访问字符串中的字符。字符串常量在内存中以字符数组的形式存储,可以通过指向字符的指针访问字符串中的字符。使用指针访问字符串时,需要注意字符串的结束符0,以避免访问到非法内存地址。指针与函数03传递地址通过指针作为函数参数,可以将变量的地址传递给函数,从而实现函数对变量的修改。动态内存分配通过指针作为函数参数,可以在函数中动态分配内存,并返回给调用者使用。高效数据交换通过指针作为函数参数,可以高效地交换大量数据,避免数据拷贝。指针作为函数参数030201返回数组的指针返回指针的函数可以用于返回数组的地址,使调

4、用者能够访问和操作数组元素。返回结构体的指针返回指针的函数可以用于返回结构体的地址,使调用者能够访问结构体的成员。动态内存分配返回指针的函数可以用于动态分配内存,并返回指向新分配内存的指针。返回指针的函数指向函数的指针函数指针是指向函数的指针变量,可以通过函数指针来调用函数。回调函数函数指针可以用于实现回调函数,即在某个特定事件发生时自动调用某个函数。实现动态绑定通过函数指针和虚函数表,可以实现动态绑定,即在运行时确定要调用的函数。函数指针动态内存分配04使用malloc函数分配内存参数size_tsize表示要分配的内存大小。功能在堆区分配指定字节数的内存空间,并返回指向它的指针。mallo

5、c函数定义void*malloc(size_tsize);返回值如果分配成功,返回指向新分配内存的指针;如果分配失败,返回NULL。示例int*ptr=(int*)malloc(sizeof(int);使用calloc函数分配内存void*calloc(size_tnum,size_tsize);calloc函数定义在堆区分配指定数量和指定大小的内存空间,并将内存初始化为0,然后返回指向它的指针。num表示要分配的元素数量,size_tsize表示每个元素的大小。如果分配成功,返回指向新分配内存的指针;如果分配失败,返回NULL。int*ptr=(int*)calloc(10,sizeof(i

6、nt);功能参数返回值示例注意事项释放后的内存指针不能再使用,否则会导致未定义行为。释放后应将指针设置为NULL,以避免悬挂指针的问题。free函数定义voidfree(void*ptr);功能释放之前使用malloc或calloc等函数分配的内存空间。参数void*ptr表示要释放的内存指针。使用free函数释放内存指针与结构体05使用结构体指针变量来存储结构体变量的地址。结构体指针定义在定义结构体指针时,可以直接将其初始化为某个结构体变量的地址。结构体指针初始化结构体指针的定义与初始化01示例代码02c03structStudent结构体指针的定义与初始化charname20;结构体指针的

7、定义与初始化intage;结构体指针的定义与初始化;structStudent*p=&stu1;/定义并初始化结构体指针structStudentstu1;结构体指针的定义与初始化01使用箭头运算符(-)通过结构体指针访问结构体成员。02示例代码03c04printf(%sn,p-name);/通过结构体指针访问name成员05printf(%dn,p-age);/通过结构体指针访问age成员06通过结构体指针访问结构体成员结构体指针作为函数参数将结构体指针作为函数参数,可以在函数内部通过指针访问和修改结构体的内容。示例代码voidprintStudent(structStudent*p)c结

8、构体指针作为函数参数printf(%sn,p-name);printf(%dn,p-age);结构体指针作为函数参数010203printStudent(&stu1);/传递结构体指针作为参数结构体指针作为函数参数指向指针的指针06二级指针是指向指针的指针,可以用来表示指针的地址。定义在定义二级指针时,需要将其初始化为某个指针的地址。初始化二级指针的定义与初始化02030401通过二级指针修改指针的值通过二级指针可以间接地修改指针的值。首先,将二级指针指向某个指针的地址。然后,通过解引用二级指针来获取该指针的值。最后,修改该值并重新赋值给该指针。010203在动态内存分配中,经常需要使用二级指针来操作内存。使用malloc或calloc函数为动态内存分配空间时,返回的是一个指向该内存区域的指针。通过二级指针,可以获取该指针的地址,从而可以修改该指针的值来改变动态内存区域的内容。二级指针在动态内存分配中的应用THANKS感谢观看

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com