C语言指针进阶:通过函数参数交换变量值

需积分: 48 2 下载量 12 浏览量 更新于2024-07-14 收藏 732KB PPT 举报
"这篇资源主要介绍了C语言中的指针知识,特别是指针作为函数参数的应用。通过一个寻宝故事——寻找保险箱密码,形象地解释了指针在内存管理和数据交换中的作用。" 在C语言中,指针是一种非常重要的数据类型,它允许我们存储变量的地址,并通过这个地址来间接访问和修改变量的值。指针可以看作是内存单元的地址,通过指针,我们可以实现对内存的直接操作。 在函数调用中,指针作为参数的使用是非常常见的。例如,在`swap2`函数中,`int *px`和`int *py`是两个指针类型的形参,它们接收主调函数传递过来的变量`a`和`b`的地址。在函数内部,通过`*px`和`*py`可以访问并修改它们所指向的值,实现数据的交换。这与`swap1`和`swap3`函数不同,后两者不能直接改变主调函数中的变量值,因为它们是值传递,而`swap2`是通过指针进行引用传递。 指针变量的定义通常包括类型和变量名,例如`int *p`表示一个指向整型变量的指针。为了正确使用指针,我们需要对其进行初始化,即赋予它一个有效的内存地址,如`int x = 10; int *p = &x;`。通过解引用操作`*p`,我们可以访问和修改指针指向的变量。 指针变量可以进行基本的算术运算,如加减操作,这在遍历数组或字符串时尤其有用。此外,指针作为函数参数可以实现函数调用返回多个值的功能,例如,一个函数可以通过返回一个指针来让调用者访问多个结果。在动态内存分配中,`malloc`和`calloc`等函数就是通过指针来分配和管理内存。 在示例8-1中,程序展示了如何通过指针间接访问和输出变量`key`的值。首先声明一个整型变量`key`并赋值,然后声明一个指针变量`addr`并将其设置为`key`的地址。通过`*addr`,我们可以直接访问到`key`的值,从而实现间接访问。 总结本章的重点,主要包括: 1. 变量、内存单元和地址的关系:变量在内存中占有特定的地址,通过地址可以访问变量。 2. 定义和初始化指针变量:`类型 *变量名 = &变量`,其中`&`是取地址运算符。 3. 指针的基本运算:包括解引用`*`和地址运算符`&`,以及指针的算术运算。 4. 指针作为函数参数:允许函数改变实参变量的值,实现引用传递。 5. 使用指针实现多值返回:通过返回指针,函数可以提供多个结果。 6. 动态内存分配:通过指针进行内存的动态申请和释放。 通过理解和掌握这些知识点,开发者可以更好地操控内存,实现高效且灵活的编程。