好吧,我猜这是一个简单的问题,所以我会接受敲门,但我在谷歌或 SO 上找不到我需要的东西。我想在一个地方创建一个数组,并将其填充到另一个函数中。
我定义了一个函数:
void someFunction(double results[])
{
for (int i = 0; i<100; ++i)
{
for (int n = 0; n<16; ++n) //note this iteration limit
{
results[n] += i * n;
}
}
}
这是我的代码正在执行的操作的近似值,但无论如何,不应该遇到任何溢出或越界问题或任何问题。我生成一个数组:
double result[16];
for(int i = 0; i<16; i++)
{
result[i] = -1;
}
然后我想把它传递给someFunction
someFunction(result);
当我设置断点并单步执行代码时,在输入 时someFunction
,results
设置为与 相同的地址result
,并且该值如预期的那样为 -1.000000。但是,当我开始遍历循环时,results[n]
似乎没有解析为*(results+n)
or *(results+n*sizeof(double))
,它似乎只是解析为*(results)
. 我最终得到的是,我没有填充我的结果数组,而是得到一个值。我究竟做错了什么?
编辑
哦,有趣,我有一个错字:不是void someFunction(double results[])
. 它是:
void someFunction(double result[])...
所以也许这正在变成一个范围界定问题。如果我的double result[16]
数组在 main.cpp 中someFunction
定义,并且在 main.cpp 包含的 Utils.h 文件中定义,那么其中的result
变量是否会对 mainsomeFunction
中的数组造成严重破坏result
?
编辑2:
@gf,在尝试使用新项目重现此问题的过程中,原始项目“神奇地”开始工作。
我不知道如何解释它,因为没有任何改变,但我很确定我所看到的 - 我对这个问题的原始描述很清楚,所以我不认为我是在产生幻觉。我感谢您的时间和答案……很抱歉浪费您的时间。如果再次发生,我会再次更新,但与此同时,我想我很清楚。再次感谢。