【发布时间】:2012-02-11 18:45:36
【问题描述】:
我有一个小程序计算行星相互之间的力。我的程序有两个结构数组,一个保存迭代前的位置和速度,另一个保存迭代后它们的位置和速度。
在每次迭代结束时,我想将第二个数组中的值移动到第一个数组中,而第二个数组可能会变成垃圾(但需要指向一些我以后可以写入的有效内存位置)。我想我可以简单地切换数组,因为数组是一个指针,但编译器不会让我这样做。
考虑这个例子:
typedef struct { int a; } Foo;
int main()
{
Foo bar[8], baz[8];
Foo *temp = baz;
baz = bar; //ISO C++ forbids the assignment of arrays
bar = temp; //incompatible types in assignment of Foo* to Foo[8]
}
这就是我想做的。它肯定会比从 1 到 N 的 for 循环更快。
【问题讨论】:
-
“因为数组是指针” - 错误。谁告诉你那是骗子和小偷,永远不要再和他们说话。
-
@Steve:+1 尽管有逗号滥用