У меня есть многомерный массивФункция возврата массива с
double coeff[10][3][12][519][11];
и я установить значения для этого массива в файле include-(#include "call_of_functions.h"
) в другой функции:
#include <stdio.h>
void func_T5_D1(double s, double t, double mt, double coeff[10][3][12][519][11])
{
#include "call_of_functions.h"
}
и зову эта функция в main.c
int main(){
double s, t, mt;
double coeff[10][3][12][519][11]={0};
double ex;
printf("enter 3 values for s, t and mt:\n");
scanf("%lf %lf %lf", &s, &t, &mt);
printf("%lf %lf %lf\n", s, t, mt);
func_T5_D1(s, t, mt, coeff);
ex = coeff[5][1][10][309][10];
printf("%.14e \n",ex);
return 0;
}
Однако я получаю повреждение. Если я включу #include "call_of_functions.h"
в main.c, он работает хорошо.
- Как я могу вернуть значения этого 5-мерного массива в главном?
- Или есть другой альтернативный способ сделать это?
У нас недостаточно информации для диагностики проблемы. Пожалуйста, либо уменьшите проблему до того, что мы можем воспроизвести, либо запустите отладчик вашего кода, чтобы получить подсказку, где произошла ошибка. – hivert
Сначала создайте с помощью отладочной информации (используйте флаг '-g' для' gcc'), затем запустите в отладчике. Когда вы запустите в отладчике, он остановится на месте сбоя, и там вы сможете изучить и даже подойти к стеке вызовов функций и изучить значения переменных. По крайней мере, отредактируйте свой вопрос, чтобы включить стек вызовов функции (используйте команду 'bt' в отладчике' gdb'). –
Ваш массив 'coeff' имеет размер около 16 МБ, поэтому у вас, вероятно, есть [переполнение стека] (https://en.wikipedia.org/wiki/Stack_overflow) - либо сделать его' static' (быстрое и грязное исправление) или распределить его динамически с помощью 'malloc' (правильное исправление). –