簡體   English   中英

指針列表出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM