还剩26页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《C程序设计指针》PPT课件•指针概述contents•指针的基本操作•指针与数组目录•指针与函数•动态内存分配与指针•指针的高级应用01指针概述CHAPTER指针的定义指针指针变量指针类型指针是一种变量,其存储的是其用于存储其他变量地址的变量指针变量所指向的数据类型他变量的地址,而不是该变量的值通过使用指针,我们可以间接地访问和修改变量的值指针的重要性提高代码可读性和可维护性01通过使用指针,我们可以更清晰地表达代码的意图,使代码更易于理解和维护优化内存管理02指针可以帮助我们更有效地管理内存,避免内存泄漏和不必要的内存占用实现复杂的数据结构03通过使用指针,我们可以实现复杂的数据结构,如链表、树等指针的分类指向变量的指针指向数组的指针指向单个变量的指针指向数组元素的指针指向函数的指针指向字符串的指针可以调用函数的指针指向字符串常量的指针02指针的基本操作CHAPTER指针的声明与初始化指针的声明在C语言中,指针是一种变量,用于存储其他变量的地址要声明一个指针,需要使用星号(*)和类型说明符例如,int*ptr声明了一个指向整数的指针指针的初始化在声明指针后,需要将其初始化为某个变量的地址可以使用取地址运算符()获取变量的地址,并将其赋值给指针例如,int num=10;int*ptr=num;将num的地址赋值给了ptr指针指针的赋值指针赋值可以将一个指针的值赋给另一个指针,这样两个指针将指向同一个地址例如,int*ptr1=num;int*ptr2=ptr1;将ptr1的值赋给了ptr2,现在ptr1和ptr2都指向num的地址空指针如果指针被赋值为NULL,则表示该指针不指向任何地址空指针是一个特殊的值,用于表示指针没有指向任何有效的内存地址指针的算术运算指针算术可以通过对指针进行算术运算来访问和修改变量的值例如,int arr
[5]={1,2,3,4,5};int*ptr=arr;ptr将ptr指针向后移动一个整数的大小,使其指向下一个元素指针与整数可以将整数与指针进行算术运算,但需要注意运算的单位和结果例如,int*ptr=arr;ptr+=2;将ptr指针向后移动两个整数的大小,使其指向arr数组中的第三个元素指针的递增和递减•递增和递减可以通过对指针进行递增和递减操作来改变指针的指向位置例如,int*ptr=num;ptr;将ptr指针向后移动一个整数的大小,使其指向下一个变量同理,ptr--将指针向前移动一个整数的大小,使其指向上一个变量03指针与数组CHAPTER数组的指针数组名可以视为指向数组第一个元素的指针数组名加下标表示访问数组中的元素,实际上是通过指针进行间接访问数组的指针可以用于函数参数传递,实现数组的传递通过指针访问数组元素指针变量可以通过赋值操作指向数组元素通过指针变量加偏移量访问使用指针访问数组元素比使用数组元素,偏移量可以是整下标更加灵活和高效数或负数指针与二维数组二维数组可以看作是特殊的一维数组,其元素也1是一维数组二维数组的行指针和列指针可以用于访问二维数2组中的元素通过行指针和列指针可以方便地进行二维数组的3遍历和操作04指针与函数CHAPTER函数参数传递方式值传递通过拷贝传递参数,函数内部对参数的修改不会影响原始数据地址传递通过传递参数的地址,函数内部对参数的修改会影响原始数据指针传递通过传递指针变量的地址,函数内部通过指针访问和修改原始数据指针作为函数参数传递数组的地址动态内存分配通过传递数组的地址和大小,函数内部可以通通过传递指针变量的地址,函数内部可以动态过指针操作数组元素分配内存给指针变量回调函数通过传递函数指针,可以在函数调用时指定要执行的函数返回指针的函数返回数组的指针函数可以返回数组的地址,调用者可以通过返回的指针访问数组元素返回动态内存分配的指针返回结构体的指针函数可以动态分配内存并返回指向该内存的函数可以返回结构体的地址,调用者可以通指针过返回的指针访问结构体成员05动态内存分配与指针CHAPTER动态内存分配的概念动态内存分配是指在程序运行时,根据需要动态地分配或释放01内存空间的过程与静态内存分配不同,动态内存分配不需要在编译时确定内存02的大小,而是在运行时根据实际需求进行分配动态内存分配通常用于处理大小不确定的数据结构或处理大量03数据的情况使用malloc函数分配内存malloc函数是C语言中用于动态内存分配的函数之一它接受一个整数参数,表示要分配的内存大小(以字节为单位),并返回一个指向分配内存的指针如果内存分配成功,malloc函数返回一个非空指针;如果内存分配失败,则返回NULL使用malloc函数分配的内存空间在使用完毕后需要手动释放,以避免内存泄漏使用free函数释放内存0102free函数用于释放之前使用它接受一个指向要释放的内存的malloc、calloc或realloc等函数指针作为参数,并释放该内存空分配的动态内存间释放内存后,指针的值不会自动释放内存后,不应再访问已释放置为NULL,因此为了避免产生悬的内存,否则可能导致未定义的挂指针,建议将指针设置为NULL行为030406指针的高级应用CHAPTER指向指针的指针指向指针的指针是指一个指针变量,它存储的地址是指向另一个指针变量的地址这种指针常用于动态内存分配和多维数组的处理指向指针的指针的声明形式为“int pp;”,其中pp是指向指针的指针变量通过指向指针的指针,可以方便地操作二维数组和动态分配内存例如,使用指向指针的指针可以方便地实现动态二维数组的创建和访问指针数组指针数组是指包含指针元素的数指针数组的声明形式为“int指针数组常用于处理字符串和动组每个元素都是一个指向整型*arr
[10];”,其中arr是一个包态内存分配例如,使用指针数数据的指针含10个整型指针元素的数组组可以方便地实现字符串的拼接和分割操作二级指针二级指针是指一个指向指针的指针它可以用来表示一个指向二维数组元素的指针,也可以用来表示指向指针数组元素的指针二级指针的声明形式为“int p;”,其中p是一个指向整型指针的指针通过二级指针,可以方便地操作二维数组和动态内存分配例如,使用二级指针可以方便地实现动态二维数组的创建和访问同时,二级指针在函数参数传递中也有着重要的应用,它可以用来实现变参函数的实现,使得函数能够接受可变数量的参数THANKS感谢观看。
个人认证
优秀文档
获得点赞 0