Несколько моментов, которые могут помочь вам понять массивы и указатели и их взаимосвязь:
Указатель действительно указывает только на один «объект», но этот объект может быть первым в массив.
Массивы естественным образом распадаются на указатели на их первый элемент.
И индексация массива эквивалентна арифметике указателей c (для любого указатель или массив a
и индекс i
, выражение a[i]
точно равно *(a + i)
).
Что касается указанного вами примера кода c возможно, было бы проще, если бы вы думали об этом, как это:
avgminmax_avg_t *temp_ptr = &avrg_stpc[idx_u16];
temp_ptr->sum_f32 += ...;
temp_ptr->avg_f32 = ...;
Или, возможно, как:
avgminmax_avg_t temp_object = avrg_stpc[idx_u16];
temp_object.sum_f32 += ...;
temp_object.avg_f32 = ...;
avrg_stpc[idx_u16] = temp_obj;
Оба приведенных выше фрагмента приведут к тому же результату, что и ваш существующий код, но требуется дополнительная временная переменная, а в последнем фрагменте копирование структуры дважды.