c++ 传递局部数组指针
时间: 2023-07-20 14:04:01 浏览: 113
指针传递
在 C++ 中,传递局部数组指针有一些需要注意的细节。
首先,如果你要传递一个局部数组指针,那么你需要确保在函数返回后这个数组还是有效的。否则,在函数返回后访问这个数组会导致未定义行为。
解决这个问题的方法是使用动态内存分配,即使用 new 运算符在堆上分配内存。这样,就可以确保在函数返回后仍然可以访问这个数组。
下面是一个简单的例子,演示如何传递局部数组指针:
```c++
#include <iostream>
void foo(int* arr, int size) {
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
int* arr = new int[3];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
foo(arr, 3);
delete[] arr;
return 0;
}
```
在这个例子中,我们首先使用 new 运算符在堆上分配了一个大小为 3 的整数数组,然后初始化了这个数组的值。接着,我们将这个数组的指针和大小作为参数传递给了 foo 函数。在 foo 函数中,我们遍历了这个数组,并将每个元素打印出来。最后,我们使用 delete[] 运算符释放了这个数组所占用的内存。
需要注意的是,在实际开发中,我们应该尽量避免使用动态内存分配,因为它容易导致内存泄漏和内存安全问题。如果可能的话,我们应该使用标准库提供的容器类型,如 std::vector,来代替手动管理内存的数组。
阅读全文