c++ - 可以在函数声明中声明固定长度数组吗?

标签 c++ arrays allocation

我正在阅读一些 C++ 代码(SGP4,卫星传播代码),我发现了以下函数声明:

void twoline2rv(char longstr1[130], char longstr2[130], char typerun,
            char typeinput, char opsmode, gravconsttype whichconst,
            double &startmfe, double &stopmfe, double &deltamin,
            elsetrec &satrec);

我想知道在函数参数中说 char longstr1[130] 意味着什么。为什么编译器需要知道数组的长度是 130 字节?为什么不说char *longstr1

最佳答案

这是一种误导性的代码。这些参数从字面上看确实意味着 char *longstr1(呃)。没有边界检查,什么都没有。您可以将指针传递给任意长度的数组。看来你已经知道这一点了。

现在,有人可能会说这种方法是 self 记录的,但我想说它是在记录一个谎言。如果指针“应该”有一个特定的界限,那么应该在函数声明上方用注释来记录这一点,而不是向读者建议它将由类型强制执行。 作者可能就是这么想的!

最终,要真正找出为什么这样写,您应该找到作者并询问他们。其他一切都是猜测。

关于c++ - 可以在函数声明中声明固定长度数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54447649/

相关文章:

c++ - 检查是否定义了 uint64_t

c++ - 为什么添加函数参数会导致无法识别 SLOT()?

arrays - postgresql 域检查数组值

c - 在函数内部分配内存并将其返回

c++ - Qt 中的父子关系

c++ - 具有原始数据指针和 emscripten 的对象

c++ - 为什么我不能在 btAlignedObjectArray :quicksort? 中使用仿函数作为比较器函数

无法使用数组创建 C 函数

c - 是否有可能在其自身前面有效地重新分配数据?

c - 在 C89 中为二维数组分配内存以使用函数打印矩阵