[英]Pointers list going wrong
我希望能夠使用指針訪問數組和變量。 因此,我制作了一個指向這些數組和變量的指針數組。 但是它似乎沒有編譯正確。 我哪里出錯了? (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};
感謝您的任何建議。
您的第一個數組是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};
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數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.