В школе мне нужно сделать задание, в котором я использую двумерный массив.
В качестве входных данных указывается целевое значение, которое определяет количество элементов в первом измерении массива.
Второе измерение - это операция, которую мы выполняем над текущим элементом, и сколько это будет теоретически стоить нам.
По какой-то причине мое значение в [0] [0] в массиве меняется на случайное целочисленное значение после того, как я инициализирую его с помощью calloc () (который установит массив в 0).
Мы используем 2D-массив для хранения оптимальной математической операции, которую необходимо выполнить, чтобы достичь нашей цели, вместе с теоретической стоимостью этой операции.
typedef struct GoalArray {
int **path; /* 2D-Array of operations and cost for each element */
} GoalArray;
GoalArray makeGoalArray(int goal) {
/* Returns an empty 2-Dimenional GoalArray.
* Due to there being 6 limited mathematical operations, our maximal
* needed index in the array is: (3 * the goal value) + 1.
*/
printf("Goal : %d", goal);
GoalArray ga;
ga.path = calloc((goal * 3) + 1, sizeof(int));
assert(ga.path != NULL);
for (int i = 0; i < (goal * 3) + 1; i++){
ga.path[i] = calloc(2, sizeof(int));
assert(ga.path[i] != NULL);
printf("i = %d: %d, %d\n", i, ga.path[i][0], ga.path[i][1]);
}
printf("\nTest %d, %d\n", ga.path[0][0], ga.path[0][1]);
return ga;
}
С целью 2 он производит такой вывод:
Goal : 2
i = 0: 0, 0
i = 1: 0, 0
i = 2: 0, 0
i = 3: 0, 0
i = 4: 0, 0
i = 5: 0, 0
i = 6: 0, 0
Test 19244512, 0
Как это возможно, что в операторе print значение массива с индексом [0] [0] изменилось?