Список указателей идет не так

Я хочу иметь возможность получить доступ к массивам и переменным с помощью указателей. Поэтому я сделал массив указателей на эти массивы и переменные. Но, похоже, он не компилируется правильно. Где я могу пойти не так? (c ++, atmel, avrstudio)

volatile uint8_t    lfo1Clock = 0;
volatile uint8_t    lfo2Clock = 0;
volatile uint8_t    lfo3Clock = 0;
volatile uint8_t    lfo4Clock = 0;
volatile uint8_t    lfo5Clock = 0;
volatile uint8_t    lfo6Clock = 0;

uint8_t     lfo1[5]={4,0,0,0,0};
uint8_t     lfo2[5]={4,0,0,0,0};
uint8_t     lfo3[5]={4,0,0,0,0};
uint8_t     lfo4[5]={4,0,0,0,0};
uint8_t     lfo5[5]={4,0,0,0,0};
uint8_t     lfo6[5]={4,0,0,0,0};

uint16_t    *lfoList [] = {lfo1,lfo2,lfo3,lfo4,lfo5,lfo6};
uint16_t    *lfoClockList [] = {lfo1Clock,lfo2Clock,lfo3Clock,lfo4Clock,lfo5Clock,lfo6Clock};

Спасибо за любой совет.

0

Решение

Ваш первый массив — это массив указателей uint16_t, но он указывает на массивы uint8_t. Это должно быть что-то вроде этого:

uint8_t    *lfoList [] = {lfo1,lfo2,lfo3,lfo4,lfo5,lfo6};

Ваш второй массив также является массивом указателей неправильного типа, но он также содержит простые экземпляры uint8_t, которые не будут работать, даже если тип был правильным.

Если это просто массив экземпляров uint8_t, я подозреваю, что вы хотите это:

uint8_t    lfoClockList [] = {lfo1Clock,lfo2Clock,lfo3Clock,lfo4Clock,lfo5Clock,lfo6Clock};

Если вам действительно нужно, чтобы второй массив был массивом указателей uint8_t, то вам нужно взять адрес каждого из этих элементов. И я думаю, что вам нужно использовать volatile в определении массива для совместимого типа.

volatile uint8_t    *lfoClockList [] = {&lfo1Clock,&lfo2Clock,&lfo3Clock,&lfo4Clock,&lfo5Clock,&lfo6Clock};
1

Другие решения

volatile int    lfo1Clock = 0;

int lfo1[5]={4,0,0,0,0};

int (*lfoList[5])[] = {&lfo1}; //   array of pointers to array of five integers

volatile int *lfoClockList [] = {&lfo1Clock};

Примечание. Вы используете указатель uint16_t * для вывода данных uint8_t.

0

По вопросам рекламы [email protected]