Хорошо, я предполагаю, что это простой вопрос, поэтому я постараюсь, но я не могу найти то, что мне нужно, в Google или 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)
или *(results+n*sizeof(double))
, просто кажется, что оно разрешается до *(results)
. В результате я получаю одно значение вместо заполнения массива результатов. Что я делаю не так?
EDIT
О, весело, у меня есть опечатка: это не было void someFunction(double results[])
. Было:
void someFunction(double result[])...
Так что, возможно, это превращается в предметный вопрос. Если мой массив double result[16]
определен в файле main.cpp, а someFunction
определен в файле Utils.h, который включен в main.cpp, переменная result
в someFunction
тогда нанесет ущерб result
массив в основном?
РЕДАКТИРОВАТЬ 2:
@ gf, при попытке воспроизвести эту проблему с помощью свежего проекта, оригинальный проект «волшебным образом» начал работать.
Я не знаю, как это объяснить, поскольку ничего не изменилось, но я почти уверен в том, что я видел - мое первоначальное описание проблемы было довольно ясным, поэтому я не думаю, что у меня были галлюцинации. Я ценю время и ответы ... извините за тратить ваше время. Я буду обновлять снова, если это произойдет снова, но пока, я думаю, я в чистоте. Еще раз спасибо.