c++ 函数之间传递数组 指针
时间: 2024-09-13 13:04:10 浏览: 75
在 C++ 中,函数间传递数组通常有以下几种方式:
1. **通过指针**:
- **传引用** (`&`):可以将数组名作为引用参数传递。这样,函数可以直接修改原数组,因为数组名本质上是一个指向数组首元素的指针。
```cpp
void processArray(int arr[], int size); // 定义函数接受整型数组引用
int myArray[5];
processArray(myArray, sizeof(myArray) / sizeof(myArray[0])); // 传递数组
```
- **传指针** (`*`): 直接传递数组的首地址,即指针。
```cpp
void processArray(int* arr, int size); // 定义函数接受指向数组的指针
int myArray[5];
processArray(&myArray[0], 5); // 传递数组首地址
```
2. **通过`std::vector`**:
如果不想暴露数组长度或需要动态大小,可以使用`std::vector`。它实际上是动态数组,可以在内部管理容量。
```cpp
void processArray(const std::vector<int>& vec); // 定义函数接受`std::vector`
std::vector<int> myArray = {1, 2, 3, 4, 5};
processArray(myArray); // 传递 vector
```
3. **传递数组长度** (仅适用于固定大小数组):
另一种情况是,如果函数不需要直接访问数组内容,仅需数组大小,可以传递数组的长度。
```cpp
void processArrayOfLength(int arr[], int length); // 接受数组长度和指针
int myArray[5];
processArrayOfLength(myArray, 5); // 提供数组长度
```
**注意事项**:
- 传递数组时要注意数组越界的问题,特别是在处理指针时。
- 传递动态大小数组时,尽量避免在函数内部改变数组的实际大小,除非是非常明确的需求。
阅读全文