介绍

C++数组传参
这个问题困扰我很久了,进过不停的搜索和学习
归纳了合适的方法
Windows IDE:Visual Studio 2022

支持库

      <iostream>

方式一

介绍

此方法适用于一维数组的传参(因为一维数组传参可以不需要知道大小)
多维数组也可以用,但是必须知道一维之后维度的大小

代码

一维数组传参

void PrintArray(int array[], int size) {
    std::cout << "Array" << "{";
    for (size_t i = 0; i < size; i++)
    {
        if (i != 0) {
            std::cout << ",";
        }
        std::cout << array[i];
    }
    std::cout << "}" << std::endl;
}
int main() {
    int a[5] = { 1,2,3,4,5 };
    int aSize = sizeof(a) / sizeof(a[0]);
    PrintArray(a, aSize);
    return 0;
}

二维数组传参,多维数组以此类推

void PrintArray(int array[][2], int size) {
    
    for (size_t i1 = 0; i1 < size; i1++)
    {
        std::cout << "Array" << i1 << "{";
        for (size_t i2 = 0; i2 < 2; i2++)
        {
            if (i2 != 0) {
                std::cout << ",";
            }
            std::cout << array[i1][i2];
        }
        std::cout << "}" << std::endl;
    }
}
int main() {
    int a[5][2] = {
        {1, 2},
        {4, 5},
        {7, 8},
        {10, 11},
        {13, 14}
    };
    int aSize = sizeof(a) / sizeof(a[0]);
    PrintArray(a, aSize);
    return 0;
}

方式二

介绍

是以指针的方式传递数组,和第一种方式基本相同。

代码

一维数组传参

void PrintArray(int (*array), int size) {
    std::cout << "Array" << "{";
    for (size_t i = 0; i < size; i++)
    {
        if (i != 0) {
            std::cout << ",";
        }
        std::cout << array[i];
    }
    std::cout << "}" << std::endl;
}
int main() {
    int a[5] = { 1,2,3,4,5 };
    int aSize = sizeof(a) / sizeof(a[0]);
    PrintArray(a, aSize);
    return 0;
}

二维数组传参,多维数组以此类推

void PrintArray(int (*array)[2], int size) {
    
    for (size_t i1 = 0; i1 < size; i1++)
    {
        std::cout << "Array" << i1 << "{";
        for (size_t i2 = 0; i2 < 2; i2++)
        {
            if (i2 != 0) {
                std::cout << ",";
            }
            std::cout << array[i1][i2];
        }
        std::cout << "}" << std::endl;
    }
}
int main() {
    int a[5][2] = {
        {1, 2},
        {4, 5},
        {7, 8},
        {10, 11},
        {13, 14}
    };
    int aSize = sizeof(a) / sizeof(a[0]);
    PrintArray(a, aSize);
    return 0;
}

方式三

介绍

此方法是使用模板来支持多维数组的传参的,支持任意维度数组
作者推荐

代码

要传几维数组就创建几个模板

template <size_t one, size_t two>
void PrintArray(int(&array)[one][two]) {
    for (size_t io = 0; io < one; io++)
    {
        std::cout << "Array" << io << "{";
        for (size_t it = 0; it < two; it++)
        {
            if (it != 0) {
                std::cout << ",";
            }
            std::cout << array[io][it];
        }
        std::cout << "}" << std::endl;
    }
}

int main() {
    int a[4][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9},
        {10, 11, 12}
    };
    PrintArray(a);
    return 0;
}

结尾


以上就是作者对数组传参的学习成果,希望对大家有帮助。