将数组作为引用传递给函数
函数参数不能是数组(否则退化为指针),但可以是到数组的引用类型或指向其的指针类型,此时不会退化。
#include <iostream>void printArray(int (&arr)[5]) {for (int i = 0; i < 5; ++i) {std::cout << arr[i] << " ";}
}int main() {int myArray[5] = {1, 2, 3, 4, 5};printArray(myArray);return 0;
}
在 C++20 以后,auto可以用于普通函数的参数类型。
#include <iostream>void printArray(auto &arr) { //auto推导为 int[5]类型 相当于 int(&arr)[5]=myArraysize_t size = sizeof(arr) / sizeof(arr[0]);std::cout << "size = " << size << std::endl;for (int i = 0; i < size; ++i) {std::cout << arr[i] << " ";}
}int main() {int myArray[5] = {1, 2, 3, 4, 5};printArray(myArray);return 0;
}