我可以定义一个函数来返回对固定大小数组的引用吗

Can I define a function which returns a reference to an array with a fixed size?

本文关键字:小数 数组 引用 返回 定义 函数 一个 我可以      更新时间:2023-10-16

此函数接受一个int,并用该值填充一个包含10个int的数组,并返回一个指向该数组的指针。我怎么能做同样的事情,但返回对数组的引用?

int (*g(int n))[10]
{
    int (*ptr)[10] = (int (*)[10])malloc(sizeof(int) * 10);
    for (int i = 0; i < 10; i++) {
        (*ptr)[i] = n;
    }
    return ptr;
}

类似的东西

int (&h(int n))[10]
{
    // How to do this
    int (&ref)[10] = ???;
    for (int i = 0; i < 10; i++) {
        ref[i] = n;
    }
    return ref;
}

同样的方法,但在返回之前取消引用:

int (&h(int n))[10]
{
    return *g(n);
}

或(不那么简短)

int (&h(int n))[10]
{
    int (*ptr)[10] = (int (*)[10])malloc(sizeof(int) * 10);
    for (int i = 0; i < 10; i++) {
        (*ptr)[i] = n;
    }
    return *ptr;
}

或更明确的

int (&h(int n))[10]
{
    int (*ptr)[10] = (int (*)[10])malloc(sizeof(int) * 10);
    for (int i = 0; i < 10; i++) {
        (*ptr)[i] = n;
    }
    int& ref = *ptr;
    return ref;
}