如果我可以传递已知大小的数组:

void fn(int(*intArray)[4])
{
    (*intArray)[0] = 7;
}

为什么我不能退货:
int intArray[4] = {0};
int(*)[4] fn()
{
    return &intArray;
}

此处,“(*)”中的“)”生成“语法错误:””。

最佳答案

[4]在函数名之后,就像在变量定义中在变量名之后:

int (*fn())[4]
{
    return &intArray;
}

由于这是一种非常晦涩的语法,容易使阅读它的每个人感到困惑,因此,如果您没有特殊的理由必须将其作为指向数组的指针,则建议将数组作为简单的int*返回。

您还可以使用typedef简化函数定义:
typedef int intarray_t[4];

intarray_t* fn() { ... }

关于c++ - 在C++中返回已知大小的数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3005527/

10-15 00:22