我刚开始使用 C++ 进行复杂的编程。我一直在筛选我部门传下来的一些剩余的、未注释的、学术代码,我偶然发现了一些我不知道如何用谷歌搜索的东西。我不明白引用结构数组的语法。
这是我正在努力解决的问题的精简版:
typedef struct
{
double x0,y0;
double r;
} circle;
double foo()
{
int N = 3;
double mtt;
circle circles[N];
for (int i = 0; i < N; i++)
{
mtt += mtt_call_func((circles+i), N);
}
return mtt;
}
在这种情况下,(circles+i)
是什么意思?
编辑:函数应该有 (circles + i)
,而不是 (circle + i)
。
最佳答案
circles+i
等同于 &circles[i]
。这就是指针算法在 C++ 中的工作原理。
为什么会有指针?好吧,当您在 &circles
或 sizeof circles
以外的上下文中给出数组名称时,会创建一个指向数组第一个成员的临时指针;这就是您的代码的作用。数组在 C++ 中是二等公民;它们的行为不像对象。
(我假设你的 circle+i
是 circles+i
的拼写错误,正如其他人所建议的那样)
关于C++ 引用结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23037750/