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;
}