C++教程:数组作为函数参数详解

需积分: 23 0 下载量 117 浏览量 更新于2024-08-24 收藏 8.81MB PPT 举报
"数组作为函数参数-C++教程 谭浩强" 在C++编程中,数组是一种非常重要的数据结构,用于存储同类型的多个元素。在实际编程中,我们经常需要将数组作为参数传递给函数。谭浩强的C++教程中详细介绍了这个主题。 一、数组元素作函数参数 当我们将数组元素作为函数参数时,这里要注意的是,C++中的函数参数传递通常是按值传递。这意味着函数接收的是实参(函数调用时提供的值)的一个副本,而不是实参本身。因此,如果函数内部改变了形参的值,这不会影响到实参。对于数组元素,这一规则同样适用。例如: ```cpp void printElement(int arr[], int index) { std::cout << arr[index] << std::endl; } int main() { int numbers[5] = {1, 2, 3, 4, 5}; printElement(numbers, 0); // 打印数组的第一个元素 return 0; } ``` 在这个例子中,`printElement`函数接收一个整型数组和一个索引,然后打印出数组中对应位置的元素。虽然数组名在大多数情况下可以被视为指向数组首元素的指针,但在函数参数列表中,它仍然被视为一个值。因此,即使函数内部改变`arr[index]`的值,这也不会影响到原始数组`numbers`。 二、数组名作为函数参数 尽管数组元素是按值传递的,但可以将整个数组的地址(即数组名)作为指针类型函数参数。这样,函数可以通过指针访问和修改数组的所有元素。例如: ```cpp void printArray(int* arr, int size) { for (int i = 0; i < size; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; } int main() { int numbers[5] = {1, 2, 3, 4, 5}; printArray(numbers, 5); // 打印整个数组 return 0; } ``` 在这个例子中,`printArray`函数接收一个指向整型元素的指针和数组的大小,然后遍历并打印整个数组。由于传入的是数组的地址,所以函数可以访问并修改原始数组的元素。 三、数组作为函数返回值 虽然在C++中,数组不能直接作为函数的返回值,但可以返回指向数组的指针或引用。这种做法常用于创建动态分配的数组或函数返回的结果集。例如: ```cpp int* createArray(int size) { int* newArray = new int[size]; // 初始化数组 for (int i = 0; i < size; i++) { newArray[i] = i * i; } return newArray; } int main() { int* result = createArray(5); // 使用返回的数组 for (int i = 0; i < 5; i++) { std::cout << result[i] << " "; } delete[] result; // 不要忘记释放内存 return 0; } ``` 在这个例子中,`createArray`函数动态分配了一个新的数组,并返回其首地址。主函数通过这个地址可以访问和使用新数组,但需要注意在完成后要释放分配的内存。 总结,谭浩强的C++教程强调了在处理数组作为函数参数时的要点,包括按值传递数组元素、使用数组名作为指针参数以及通过指针或引用返回数组。理解这些概念对于编写高效且安全的C++代码至关重要。