指针列表出错
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数据
相关文章:
- 读取文件的最后一行并输入到链接列表时出错
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 基于数组的列表 - 动态数组创建时出错
- 编译包含指向模板函数的指针的初始值设定项列表时,gcc 出错,但 clang 不出错
- 方法的参数列表出错
- 使用 C++ 的迭代目录列表出错
- 尝试访问列表时出错
- 使用列表 STL 时出错
- C2057构造函数初始化列表中的常量值定义出错
- 使用变量参数列表为传递的引用赋值(VS2010中出错)
- 创建模板树节点列表时出错
- 通过函数后从列表中删除项目时出错
- 链接列表的Push_back函数出错
- 泛型列表节点类中出错
- C++实现邻接列表时出错
- 运行列表的实现时出错
- 使用链接列表"Stop working"的 c++ 代码中出错
- g++4.8.2上列表方法参数默认初始化时出错
- 将大括号括起来的初始值设定项列表转换为类型时出错的含义
- 如果类构造函数的大括号闭合列表的大小错误,则编译时出错