Указывать на конкретное значение массива

У меня есть массив, int* array, с более чем 10.000 значений int, но я хочу указать на каждую позицию 100, это означает, что у меня будет int ** matrix, где:
matrix[i][j], Я хочу i из моей матрицы, чтобы указать на array[i * 100]Как вы можете заменить адрес? вот что я сделал:

u_int8_t **matrix = (u_int8_t **)malloc(width * sizeof(u_int8_t *));

int width_cr = 0;
for (int i = 0; i < width; i ++) {
    if (i % 100 == 0) {

        u_int8_t *position = matrix[width_cr];
        position = &array[i];
        width_cr ++;           

    }
}

проблема в том, что он указывает на начало массива

1 ответ

Решение

Хранить адрес array[i] в matrix[i / 100],

#define HOW_MUCH_NUMBERS 10000

[...]
{
  int array[HOW_MUCH_NUMBERS];
  int i = 0;
  int **matrix;

  matrix = malloc(sizeof(*matrix) * (HOW_MUCH_NUMBERS / 100));
  while (i < HOW_MUCH_NUMBERS)
  {
    matrix[i / 100] = &array[i];
    i += 100;
  }
  [...]
}
Другие вопросы по тегам