首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你能在一个函数声明中声明一个固定长度的数组吗?

你能在一个函数声明中声明一个固定长度的数组吗?
EN

Stack Overflow用户
提问于 2019-01-31 02:55:06
回答 2查看 53关注 0票数 2

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

代码语言:javascript
复制
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呢?

EN

回答 2

Stack Overflow用户

发布于 2019-01-31 02:57:36

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2019-01-31 02:56:21

这是一样的;声明会衰减到char *longstr1,但对于阅读该API的人来说,它需要的缓冲区正好是130个字符,这更能说明问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54447649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档