Указывать на конкретное значение массива
У меня есть массив, 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;
}
[...]
}