还剩26页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《指针与函数》PPT课件•指针概述•指针与函数•指针与数组•指针操作•动态内存分配•常见错误与注意事项01指针概述指针的定义指针是一种变量,用于存储其他变量的地址通过指针可以间接访问和修改变量的值指针变量在声明时需要指定所指向变量的数据类型指针的作用通过指针可以传递复杂的数据结构01指针可以提高程序的执行效率02指针可以用于动态内存分配和释放03指针的声明与初始化指针的初始化在声明指针时,可以直接将其初始化为某个变量的指针的声明地址,例如int x=10;int*p=x;,此时p指向变量x的地址使用星号(*)和类型说明符来声明指针变量,例如int*p;声明了一个指向整数的指空指针针变量p未初始化的指针值为NULL,表示该指针不指向任何变量02指针与函数函数参数传递方式值传递通过拷贝传递参数,函数内部对参数的修改不会影响原始数据引用传递通过引用传递参数,函数内部对参数的修改会直接影响原始数据指针传递通过指针传递参数,函数内部可以通过指针修改原始数据指针作为函数参数传递指针作为参数可以方便地在函数间共享数据通过指针修改数据,可以避使用指针需要小心处理空指针免数据的拷贝,提高效率和野指针问题返回指针的函数返回指针的函数可以返回一个动态分配的内存地1址使用返回的指针需要在使用完毕后释放内存,避2免内存泄漏返回指针的函数需要谨慎处理返回值的有效性和3安全性函数指针函数指针是指向函数的指针变量通过函数指针可以调用函数,实现回调函数等功能使用函数指针需要了解函数的原型和参数类型,确保正确调用03指针与数组数组名作为指针01数组名在大多数情况下可以被当作指向数组第一个元素的指针02通过数组名访问数组元素时,实际上是通过指针间接访问的03数组名具有常量性,不能通过数组名对数组元素进行修改指针与一维数组010203指针变量可以指向一维通过指针变量可以访问指针变量可以指向数组数组中的元素和修改变量的值的首地址、尾地址、任意地址等指针与多维数组010203多维数组可以看作是多个一维指针变量可以指向多维数组中多维数组的地址计算相对复杂,数组的组合的元素,通过解引用操作符*需要考虑多个维度的大小和偏可以访问和修改变量的值移量04指针操作指针的算术运算指针的加法将指针所指向的地址加上一个整数,相当于向后移动该整数个元素指针的减法将指针所指向的地址减去一个整数,相当于向前移动该整数个元素指针的乘法和除法指针的乘法和除法在编程中不常用,但在某些特定情况下可能会用到指针的比较运算01等于运算符判断两个指针是否指向同一个地址02不等于运算符判断两个指针是否指向不同的地址03大于、小于、大于等于、小于等于运算符比较两个指针所指向的地址大小指针的位运算0102位与运算符位或运算符对两个指针所指向的地址进行位与对两个指针所指向的地址进行位或运算运算位异或运算符位取反运算符对两个指针所指向的地址进行位异对一个指针所指向的地址进行位取或运算反运算030405动态内存分配使用malloc函数分配内存malloc函数用于在堆区动态分配内存,其参数是要分配的内存大小,返回值01是指向所分配内存的指针malloc函数会向系统申请一块连续的内存空间,并返回指向它的指针如果02申请成功,则返回非空指针;如果申请失败,则返回NULL使用malloc函数分配的内存需要手动释放,否则会造成内存泄漏03使用calloc函数分配内存calloc函数用于在堆区动态分配内存,其参数是要分配的元素个数和每个元素的大小,返回值是指向所分配内存的指针calloc函数会初始化所分配的内存为0,因此可以用来分配数组等需要初始化为0的内存空间calloc函数和malloc函数类似,也需要手动释放所分配的内存,否则会造成内存泄漏使用realloc函数调整内存大小realloc函数用于调整已分配内存的大小其参数是原内存指针和新的内存大小realloc函数会重新分配内存空间,并返回指向新的内存空间的指针如果申请成功,则返回非空指针;如果申请失败,则返回NULL使用realloc函数调整内存大小时,需要特别注意不要超过原内存空间的大小,否则会导致数据丢失或程序崩溃06常见错误与注意事项空指针解引用总结词详细描述空指针解引用是常见的编程错误,它会当指针被初始化为NULL或未被正确初始导致程序崩溃或未定义行为化时,如果试图通过该指针访问内存,就VS会发生空指针解引用为了避免这种错误,程序员应该在使用指针之前确保它已经被正确初始化,并且在访问指针所指向的内存之前检查指针是否为NULL野指针问题总结词野指针是指指向无效内存区域的指针,它会导致程序错误和安全漏洞详细描述野指针通常是由于指针被释放后又被使用,或者指针指向的内存区域被释放后又被分配给其他变量为了避免野指针问题,程序员应该在使用指针之前确保它指向有效的内存区域,并且在释放内存后将指针设置为NULL内存泄漏问题总结词详细描述内存泄漏是指程序在动态分配内存后未能正内存泄漏通常是由于程序员忘记释放已分配确释放,导致内存资源逐渐耗尽的内存或者在循环中重复分配内存但未释放为了避免内存泄漏问题,程序员应该在使用动态内存分配函数(如malloc、calloc和realloc)时确保在不再需要内存时释放它,并使用适当的工具和技术来检测和定位内存泄漏THANKS感谢观看。
个人认证
优秀文档
获得点赞 0