将数组作为引用传递给函数
函数参数不能是数组(否则退化为指针),但可以是到数组的引用类型或指向其的指针类型,此时不会退化。
#include
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
void printArray(auto &arr) { //auto推导为 int[5]类型 相当于 int(&arr)[5]=myArray
size_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;
}