在C++中返回已知大小的数组?

Kay*_*Kay 5 c++ arrays return

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

void fn(int(*intArray)[4])
{
    (*intArray)[0] = 7;
}
Run Code Online (Sandbox Code Playgroud)

为什么我不能归还一个:

int intArray[4] = {0};
int(*)[4] fn()
{
    return &intArray;
}
Run Code Online (Sandbox Code Playgroud)

这里,"(*)"中的")"生成"语法错误:)".

sth*_*sth 5

[4]函数名后去,就好像它会在一个变量定义变量名后:

int (*fn())[4]
{
    return &intArray;
}
Run Code Online (Sandbox Code Playgroud)

由于这是非常晦涩的语法,容易让阅读它的每个人感到困惑int*,如果您没有任何特殊原因为什么它必须是指向数组的指针,我建议将数组作为 simple 返回。

您还可以使用 typedef 简化函数定义:

typedef int intarray_t[4];

intarray_t* fn() { ... }
Run Code Online (Sandbox Code Playgroud)