2d массив неправильно хранит информацию в al oop in c - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь вернуть 2d-массив в мою основную функцию из отдельной функции, в которую я ввожу некоторые данные, которые я вычисляю внутри функции. Однако во втором ряду информация хранится неправильно. Если я удаляю l oop, он сохраняется правильно, но мне нужно al oop, чтобы не писать один и тот же код снова и снова. Пример кода:

double** func1(int int1, double double1, double double2, float float1){


double** pntrArray;
int i;

pntrArray = calloc((length * 12), sizeof(double*));

for(i = 0; i < 2; i++){
 pntrArray[i] = calloc(2, sizeof(double));

int r = 0;

do{
 //calculations here
 pntrArray[0][r] = data calculated;
 pntrArray[1][r] = data calculated;
 r++;
}while(r < int1);

Я пробовал разные типы циклов и не могу получить их для ввода правильных данных. Я только начинаю изучать c, так что это может быть очень простым решением.

1 Ответ

0 голосов
/ 24 апреля 2020

Измерения поменялись местами или неправильно использованы:

Это распределяет указатели для length*12 строк, но в более позднем коде предлагается, чтобы вам понадобилось всего две строки:

pntrArray = calloc((length * 12), sizeof(double*));

Затем это выделяет пространство для двух элементы в каждой из двух строк, но предыдущий код предполагает, что вы хотите length*12 элементов в каждой из двух строк:

for(i = 0; i < 2; i++){
 pntrArray[i] = calloc(2, sizeof(double));

Позже, это работает с некоторым количеством элементов в двух строках:

 pntrArray[0][r] = data calculated;
 pntrArray[1][r] = data calculated;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...