Вот мои две структуры:
int *data = malloc(sizeof(int) * 512 * 512);
int **sortedData = malloc(sizeof(int) * 512);
Данные var содержат целые числа из файла.Предполагается, что sortedData является 2D-версией данных.Вот как я его инициализирую:
for (int i = 0; i < dimensions[0]; i++)
{
sortedData[i] = (data + i * 512);
}
Для проверки значений, которые я использую:
printf("%d\n", data[0]);
printf("%d\n", sortedData[0][0]);`
Проблема в том, что результатом второго printf является адрес, поэтому значения:
81
44766304
Я попытался напечатать значение (data + i * 512) следующим образом:
for (int i = 0; i < dimensions[0]; i++)
{
printf("%d\n", data + i * 512);
sortedData[i] = (data + i * 512);
}
И вот что: printf возвращает адрес для каждого iНо теперь результат программы - то, что я ищу:
81
81
Я не могу понять, как printf изменит возвращаемое значение и почему мое первоначальное решение неверно.
РЕДАКТИРОВАТЬ 1: Он все еще не работает после изменения sortedData с
... = malloc(sizeof(int) * 512);
на
... = malloc(sizeof(int *) * 512);