1、通过额外的参数传递数组的长度
最常见的方法是将数组长度作为额外的参数传递给函数。函数就可以使用该长度来处理数组。
#include <iostream> using namespace std; void printArray(int arr[], int length) { for (int i = 0; i < length; ++i) { cout << arr[i] << " "; } cout << endl; } int main() { int arr[] = {1, 2, 3, 4, 5}; int length = sizeof(arr) / sizeof(arr[0]); printArray(arr, length); // 传递数组及其长度 return 0; }
2、使用 std::array(C++11 及以上)
在 C++11 中,std::array
是一个具有固定大小的容器,它可以自动保存数组的大小信息。因此,当传递 std::array
时,数组的大小可以直接访问。
#include <iostream> #include <array> using namespace std; void printArray(const array<int, 5>& arr) { for (const auto& val : arr) { cout << val << " "; } cout << endl; } int main() { array<int, 5> arr = {1, 2, 3, 4, 5}; printArray(arr); // 直接传递 array return 0; }
3、使用 std::vector(动态数组)
如使用动态数组(如 std::vector
),可以直接利用 std::vector
提供的成员函数 size()
来获取数组的大小。
#include <iostream> #include <vector> using namespace std; void printArray(const vector<int>& vec) { for (const auto& val : vec) { cout << val << " "; } cout << endl; } int main() { vector<int> vec = {1, 2, 3, 4, 5}; printArray(vec); // 直接传递 vector return 0; }
4、在函数内部使用宏
可以通过宏来在函数中自动传递数组的大小,但这种方法通常不推荐使用,因为宏的调试和维护较为困难。
#include <iostream> using namespace std; #define ARR_SIZE(arr) (sizeof(arr) / sizeof(arr[0])) void printArray(int arr[]) { int length = ARR_SIZE(arr); // 使用宏获取数组长度 for (int i = 0; i < length; ++i) { cout << arr[i] << " "; } cout << endl; } int main() { int arr[] = {1, 2, 3, 4, 5}; printArray(arr); // 传递数组,宏自动计算长度 return 0; }