c++使用函数修改数组后不改变原数组
时间: 2024-09-30 18:05:19 浏览: 83
在C++中,如果你想要使用函数修改数组但不改变原数组的内容,通常可以采用几种策略:
1. **传值拷贝**:如果数组元素是基本数据类型,如int、char等,传递的是值拷贝,函数内部的操作不会影响到原始数组。例如:
```cpp
void changeArray(int arr[]) {
int temp = arr[0]; // 使用拷贝的第一个元素进行操作
arr[0] = 5; // 修改副本,原数组不变
}
int main() {
int originalArray[] = {1, 2, 3};
changeArray(originalArray);
std::cout << "Original array: ";
for (const auto& num : originalArray) {
std::cout << num << " ";
}
return 0;
}
```
2. **引用或指针**:对于非基本数据类型,如自定义结构体或对象,可以使用引用或指针来间接修改数组元素,因为引用或指针实际指向内存地址。这样改动会反映在原数组上:
```cpp
void changeArray(int (&arr)[3]) { // 通过引用传递数组
arr[0] = 5;
}
int main() {
int originalArray[] = {1, 2, 3};
changeArray(originalArray);
std::cout << "Original array: ";
for (const auto& num : originalArray) {
std::cout << num << " ";
}
return 0;
}
```
或者
```cpp
void changeArray(int* arr) { // 通过指针传递数组
*arr = 5;
}
// 使用法同上
```
注意,在第二种情况中,如果不使用引用或指针,而是直接传递数组名`int arr[]`,那么函数内部对数组的修改实际上是修改了原数组。
阅读全文