Переменная цикла печати изменяет значение переменной - PullRequest
0 голосов
/ 23 мая 2018

Вот мои две структуры:

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);
...