将数组作为引用传递给函数

函数参数不能是数组(否则退化为指针),但可以是到数组的引用类型或指向其的指针类型,此时不会退化。

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

本站无任何商业行为
个人在线分享 » C++数组
E-->