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

时间:2016-03-31 03:42:49

标签: c++

此函数接受一个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;
}

1 个答案:

答案 0 :(得分:0)

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

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