C++程序设计:形参实参指针详解

需积分: 3 2 下载量 159 浏览量 更新于2024-08-24 收藏 8.66MB PPT 举报
"形参实参都用指针变量-C++程序设计 谭浩强完整版" 在C++编程中,形参(形式参数)和实参(实际参数)的使用是函数调用的核心部分。形参是在函数定义时使用的占位符,它们在函数内部代表实际传递的数据。实参则是当函数被调用时,传入函数的实际值或对象引用。在本例中,形参和实参都使用了指针变量,这是一种常见且强大的编程技巧。 首先,让我们看一段代码示例: ```cpp void main(void) { int a[10], *p; p = a; // 将数组首地址赋给指针p ...... f(p, 10); // 调用函数f,p作为实参传递 ..... } void f(int *x, int n) { ...... } // x是形参,是一个指向整型的指针 ``` 在这个例子中,`main`函数中的`p`是一个指针变量,它被初始化为数组`a`的首地址。在调用函数`f`时,`p`作为实参传递给函数`f`的第一个形参`x`,而整数`10`传递给第二个形参`n`。这样,`f`函数内部可以通过`x`来访问和操作数组`a`的元素,因为`x`持有`a`的首地址。 使用指针作为参数有以下几个优点: 1. **效率**:通过指针传递大型数据结构(如数组)时,只需传递内存地址,而不是复制整个数据结构,这大大节省了时间和空间。 2. **灵活性**:函数可以修改实参的值,因为指针可以改变其所指向的内存区域的内容。这种能力在处理动态数据结构或需要在函数间共享状态时非常有用。 3. **引用**:在某些情况下,指针可以作为“引用”使用,确保函数始终操作同一个对象,而不是副本。 然而,使用指针作为参数也需要注意以下几点: - **安全性**:不当使用指针可能导致悬挂指针、空指针解引用等错误,这些错误可能会导致程序崩溃或安全漏洞。 - **内存管理**:程序员需要手动管理内存,包括分配和释放,这增加了出错的可能性。特别是在函数中分配的内存,必须由调用者或函数自身负责释放。 - **复杂性**:指针使得代码更复杂,对于初学者来说,理解指针的工作原理可能需要更多的时间和努力。 C++中形参和实参都用指针变量是一种常见的编程实践,它可以提供高效和灵活的编程方式,但也要求程序员有较高的理解和管理水平。学习和掌握这种技巧是成为一名熟练的C++程序员的必经之路。