如果我可以传入一个已知大小的数组:
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/