指针知识复习:掌握实参与形参的区别

需积分: 5 0 下载量 68 浏览量 更新于2024-10-20 收藏 38.24MB ZIP 举报
资源摘要信息: "129-指针9-复习前面所有指针知识 实参和形参永远是不同" 知识点: 在C语言中,指针是一种基本数据类型,它存储的是变量的内存地址。指针的概念非常重要,因为它使得程序能够动态地访问和修改内存中的数据。本资源名为“129-指针9-复习前面所有指针知识 实参和形参永远是不同”,意味着本视频教程可能是对C语言指针相关知识的一个深入复习,重点强调了函数参数中的实参(实际参数)和形参(形式参数)的区别。 一、指针基础 1. 指针的定义和声明:指针的声明需要指定指针的数据类型,例如,int *ptr; 表示ptr是一个指向整型数据的指针。 2. 指针的初始化:指针应该在使用前初始化,否则可能包含任意值,导致不可预料的程序行为。 3. 指针的使用:通过解引用操作符*来访问指针指向的变量的值,例如,*ptr表示获取ptr指向地址的值。 4. 地址运算符&:&用于获取变量的内存地址,配合指针使用。 二、实参与形参 在函数调用中,实参是传递给函数的参数,而形参是在函数定义中定义的参数。在C语言中,实参和形参之间的联系通过值传递和地址传递两种机制实现: 1. 值传递:在值传递中,实参的值被复制到形参中。对形参的任何修改都不会影响实参变量。 2. 地址传递(指针传递):在地址传递中,实参传递的是变量的内存地址,形参接收这个地址。通过指针,函数可以修改实参指向的数据。 三、指针与数组 数组名可以被解释为数组首元素的指针,因此指针与数组之间有非常紧密的关系: 1. 指针遍历数组:可以使用指针遍历数组的元素。 2. 指针与数组运算:指针和数组在某些运算中可以互换使用,例如,指针可以使用下标运算符[]访问数组元素。 四、指针的指针(多级指针) 指针变量本身也有地址,因此可以存在指向指针的指针: 1. 定义多级指针:int **pptr; 表示pptr是一个指向指针的指针,即指针的指针。 2. 使用多级指针:多级指针允许通过间接引用访问数据,常用于复杂数据结构和动态内存管理。 五、指针与函数指针 函数也有地址,可以拥有指向函数的指针: 1. 函数指针的定义:例如,int (*funcPtr)(int, int); 定义了一个指向返回int类型并接受两个int参数的函数的指针。 2. 函数指针的使用:函数指针可以用于调用函数、传递函数作为参数等高级编程技术。 六、动态内存分配 指针经常与动态内存分配函数(如malloc、calloc、realloc)配合使用,以实现动态数组和其他复杂数据结构的创建和管理: 1. 动态内存分配:使用动态内存分配函数可以在运行时分配内存空间。 2. 内存释放:动态分配的内存需要使用free函数适时释放,以避免内存泄漏。 七、指针与结构体 结构体是C语言中用于定义复合数据类型的一种机制,指针可以与结构体结合使用: 1. 结构体指针的定义:定义一个指向结构体变量的指针。 2. 结构体指针的使用:通过结构体指针访问结构体成员,通常使用箭头操作符->。 八、指针与const限定符 const限定符可以用来指定指针或指针指向的数据为只读: 1. 指针本身为const:表示不能通过这个指针修改它所指向的内存中的数据。 2. 指向的内存为const:表示不能修改指针所指向的数据,但指针本身可以指向别的地址。 3. 指针和指向的内存都为const:既不能修改指针指向的数据,也不能更改指针所指向的地址。 总结: C语言中的指针是一个非常强大且灵活的工具,它允许程序进行地址操作和内存管理,但是也增加了编程的复杂性。理解实参和形参的区别,特别是在函数调用中的表现,对于编写正确和高效的C程序至关重要。此外,指针的其他高级用法,如指针与数组、函数指针、动态内存管理等,都是C语言编程中的核心知识。