C++教程:形参实参指针详解

需积分: 16 3 下载量 109 浏览量 更新于2024-08-23 收藏 8.81MB PPT 举报
"形参实参都用指针变量-C++ 教程谭浩强" 在C++编程中,形参(形式参数)和实参(实际参数)是函数调用时涉及的重要概念。形参是函数定义时声明的变量,它们在函数内部使用,但不占用全局内存空间;实参则是函数调用时提供的实际值或对象引用。当形参和实参都使用指针变量时,意味着函数接受和处理的是内存地址,而非实际值的拷贝。 在给出的代码示例中,我们看到一个`main`函数和一个名为`f`的函数。`main`函数中声明了一个整型数组`a`和一个指向整型的指针`p`,然后将`a`的首地址赋值给`p`,这样`p`就指向了数组`a`的第一个元素。接着调用了`f`函数,并将`p`和数组元素个数`10`作为参数传递。 `f`函数的定义接收两个参数,一个是整型指针`*x`,另一个是整型`n`。这里,`*x`是形参,它在函数内部代表一个指针,用于存储传入的地址。实参`p`在调用`f`时,它的值(即数组`a`的首地址)被复制给了`f`函数中的`*x`。这意味着在`f`函数内部,`*x`可以用来访问和修改`p`所指向的内存位置的数据。 这种传递方式有以下几个关键点: 1. **指针作为参数**:使用指针作为参数可以有效地传递大对象或数据结构,因为传递的是地址而不是整个对象的副本,节省了内存和时间。 2. **调用前赋值**:实参指针变量在调用函数前必须被赋予有效的内存地址。例如,`p=a;`确保`p`指向一个已分配的内存区域。 3. **间接访问**:通过指针,函数可以间接地访问和修改实参所指向的数据。在`f`函数内部,`*x`可以被用来读取或修改`p`所指向的数组元素。 4. **数据封装**:标签“数据封装”可能是指C++的一个核心特性,它允许将数据和操作数据的方法组合在一起,形成类。在这个例子中,虽然没有直接涉及类,但是通过指针传递数据的方式可以看作是封装的一种形式,因为它允许函数`f`以某种封装的方式(通过指针)对`main`函数中的数据进行操作。 理解这些概念对于编写高效的C++代码至关重要,尤其是在处理大型数据结构或需要高效内存管理的场景中。使用指针作为参数可以使代码更灵活,同时需要谨慎处理,避免未初始化的指针和内存泄漏等问题。在学习C++时,掌握指针的用法是至关重要的一步,因为它们是语言的核心组成部分,能够帮助实现许多高级特性,如动态内存分配、回调函数、迭代器等。