【问题标题】:Merge multiple Arrays to one 2D Array将多个数组合并为一个二维数组
【发布时间】:2019-11-03 20:23:55
【问题描述】:

我这里有这个代码sn-p:


#define byte uint8_t

byte pins0[11] = {  0,  1,  2, 3,   4,  5,  6,  7, 63, 64, 65};
byte pins1[11] = {  8,  9, 10, 11, 12, 13, 14, 15, 60, 61, 62};
byte pins2[11] = { 16, 17, 18, 19, 20, 21, 22, 15, 60, 61, 62};
byte pins3[11] = { 23, 24, 25, 26, 27, 28, 29, 30, 60, 61, 62};
byte pins4[11] = { 31, 32, 33, 34, 35, 36, 37, 38, 60, 61, 62};
byte pins5[11] = { 39, 40, 41, 42, 43, 44, 45, 46, 60, 61, 62};

byte *segPins[6] = {&pins0,&pins1,&pins2,&pins3,&pins4,&pins5};

编译器显示错误:

src\main.cpp:15:63: error: cannot convert 'byte (*)[11] {aka unsigned char (*)[11]}' to 'byte* {aka unsigned char*}' in initialization
 byte *segPins[11] = {&pins0,&pins1,&pins2,&pins3,&pins4,&pins5};
                                                               ^
src\main.cpp:15:63: error: cannot convert 'byte (*)[11] {aka unsigned char (*)[11]}' to 'byte* {aka unsigned char*}' in initialization
src\main.cpp:15:63: error: cannot convert 'byte (*)[11] {aka unsigned char (*)[11]}' to 'byte* {aka unsigned char*}' in initialization
src\main.cpp:15:63: error: cannot convert 'byte (*)[11] {aka unsigned char (*)[11]}' to 'byte* {aka unsigned char*}' in initialization
src\main.cpp:15:63: error: cannot convert 'byte (*)[11] {aka unsigned char (*)[11]}' to 'byte* {aka unsigned char*}' in initialization
src\main.cpp:15:63: error: cannot convert 'byte (*)[11] {aka unsigned char (*)[11]}' to 'byte* {aka unsigned char*}' in initialization
*** [.pio\build\nanoatmega328\src\main.cpp.o] Error 1

在我看来,segPins 是一个 byte 指针数组。所以它应该通过编译器但它看到了不同?

【问题讨论】:

  • segPins 不应该是 ptrs 数组到 11 字节数组吗?
  • byte *segPins[11] 这边?
  • byte *segPins[6] = {pins0,pins1,...}; &pins0 是指向 11 个元素的数组的指针的地址,可以绑定到 byte**ptr = &pins0。 PS:注意我现在说的是数组衰减到指针的情况,但你应该了解一般情况)
  • 没有。 byte (*segPins[6])[11];但是,brj 的回答更简单,更典型的是应该如何做到这一点。
  • 为什么要使用预处理器?使用type-alias 更安全。 using byte = uint8_t;typedef.

标签: c++ arrays multidimensional-array


【解决方案1】:

你需要的是

byte *segPins[6] = {pins0,pins1,pins2,pins3,pins4,pins5};

这是因为&pins0指的是数组pins0的地址。

编辑

有关更多信息,请参阅this 问题的答案。

【讨论】:

    猜你喜欢
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 2020-11-12
    • 2023-03-28
    • 2017-10-12
    • 2021-04-26
    相关资源
    最近更新 更多