还剩21页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
C程序设计第四版课件第8章善于利用指针目录•指针的基本概念•指针与数组•指针与函数•动态内存分配•指针的高级应用01指针的基本概念指针的定义指针是一种变量,用通过指针可以间接访于存储内存地址问其所指向的内存地址中的数据指针变量存储的是其他变量的地址,而非该变量的值指针的声明与初始化未初始化的指针变量可能指向任何位声明指针变量时,需要在变量名前加置,因此使用前应确保指针已被正确上星号(*)初始化初始化指针变量时,需要将其设置为某个变量的地址指针的赋值与运算可以将一个变量的地址赋值给指可以对指针进行加法或减法运算,可以使用指针间接访问其所指向针变量以改变指针所指向的内存地址的数据,例如通过解引用运算符(*)获取指针所指向的值或修改该值02指针与数组数组的指针数组名即是指针在C语言中,数组名本质上是指向数组第一个元素的指针数组指针的算术运算可以通过对数组指针进行算术运算来访问数组中的元素指向数组的指针变量可以定义一个指向数组的指针变量,通过该变量可以访问整个数组通过指针访问数组元素使用指针访问数组元素01通过指针可以访问数组中的元素,即通过解引用指针来获取元素的值指针的算术运算02可以通过对指针进行算术运算来访问数组中的相邻元素指向元素的指针变量03可以定义一个指向数组中某个元素的指针变量,通过该变量可以访问该元素指针与字符串字符串常量的指针在C语言中,字符串常量被存储在只读内存区域,1可以通过指针来访问字符串常量字符数组与字符指针字符数组和字符指针都可以用来表示字符串,但2它们的存储方式和访问方式略有不同字符串处理函数C标准库中提供了许多用于字符串处理的函数,3如strlen、strcpy、strcat等,这些函数都使用指针作为参数03指针与函数指针作为函数参数010203传递地址提高效率灵活处理通过指针作为函数参数,通过传递地址,避免了数指针作为参数可以传递数可以将变量的地址传递给据的复制,提高了函数调组、结构体等复杂数据类函数,从而在函数内部直用的效率型,使得函数更加灵活和接修改该变量的值通用返回指针的函数字符串处理字符串处理函数如`strtok`、动态内存分配`strcpy`等返回指向字符串的指针,方便对字符串进行操作返回指针的函数可以用于动态内存分配,如使用`malloc`、`calloc`等函数为变量分配内存空间,并返回指向该内存空间的指针自定义数据结构返回指针的函数可以用于创建自定义数据结构,如链表、树等,通过返回指向节点结构的指针实现指向函数的指针回调函数函数表高阶函数指向函数的指针可以作为回调函指向函数的指针可以用于实现函指向函数的指针可以作为参数传数使用,在特定事件或条件下调数表,将一系列函数存储在一个递给其他函数,使得该函数具有用指定的函数数组中,通过索引调用不同的函更高级别的抽象能力,实现高阶数函数的概念04动态内存分配使用malloc函数分配内存定义返回值malloc函数用于在堆区动态分配内存,其如果分配成功,返回一个指向被分配内存参数是要分配的字节数的指针;如果分配失败,返回NULL用法示例注意点int*ptr=int*malloc10*sizeofint;使用malloc分配的内存需要手动释放,否则会造成内存泄漏使用calloc函数分配内存定义返回值calloc函数用于在堆区动态分配内存,并初始化分配的内如果分配成功,返回一个指向被分配内存的指针;如果分存为0,其参数是要分配的元素个数和每个元素的大小配失败,返回NULL用法示例注意点int*ptr=int*calloc10,sizeofint;使用calloc分配的内存需要手动释放,否则会造成内存泄漏使用free函数释放内存定义参数free函数用于释放之前使用malloc或calloc等函free函数的参数是一个指向要释放的内存的指针数分配的内存用法示例注意点freeptr;释放的内存指针必须是由malloc、calloc等函数返回的,否则会导致未定义行为同时,释放的内存指针在使用free之后不应再被使用,否则会导致未定义行为05指针的高级应用指向指针的指针指向指针的指针是指一个指针变量,它存储的是另一个指针变量的地址,而不是变量的值通过指向指针的指针,可以间接地访问和修改变量的值,增加了对内存地址操作的灵活性指向指针的指针在处理动态内存分配、函数参数传递和多维数组等场景中非常有用指针数组指针数组是一个数组,数组中的指针数组可以用来存储多个变量例如,char*arr
[10]表示一个包每个元素都是一个指针变量的地址,通过数组索引访问不同含10个字符指针的数组,每个指的地址,实现动态内存分配和字针可以指向一个字符串符串处理等功能二级指针二级指针是指向指针的指针,二级指针在处理动态内存分配、通过二级指针,可以方便地操用于间接地访问和修改变量的函数参数传递和多维数组等场作二维数组和多维数组,实现值景中非常有用更加灵活的数据处理THANKS感谢观看。
个人认证
优秀文档
获得点赞 0