C++ Arduino-将字节数组分配给类成员将释放最后一个元素

C++ Arduino-将字节数组分配给类成员将释放最后一个元素,c++,arrays,pointers,arduino,C++,Arrays,Pointers,Arduino,我有一个简单的草图,如下所示: class Simple { public: byte* Data; }; Simple simple; byte data[3] { 0x41, 0x42, 0x43 }; void setup() { simple.Data = data; Serial.begin(9600); } void loop() { Serial.print("sizeof(data): "); Serial.println(sizeo

我有一个简单的草图,如下所示:

class Simple {
public:
    byte* Data;
};

Simple simple;
byte data[3] { 0x41, 0x42, 0x43 };

void setup() {
    simple.Data = data;
    Serial.begin(9600);
}

void loop() {
    Serial.print("sizeof(data): ");
    Serial.println(sizeof(data));
    Serial.print("sizeof(simple.Data): ");
    Serial.println(sizeof(simple.Data));
    for(int i = 0; i < sizeof(data); i++) 
    { 
        Serial.print(data[i]); Serial.print(' '); 
    }
    Serial.println();
    for(int i = 0; i < sizeof(simple.Data); i++) 
    { 
        Serial.print(simple.Data[i]); Serial.print(' '); 
    }
    Serial.println();
    for(int i = 0; i < sizeof(data); i++) 
    { 
        Serial.print(simple.Data[i]); Serial.print(' '); 
    }
    Serial.println();
    delay(1000);
}
当我检查数组的大小(sizeof(data))并将其与类实例的数据成员的大小(sizeof(simple.data))进行比较时,它们不匹配。当我转储两个数组的内容时,它们都有三个元素

我是C/C++新手(来自C#背景),所以我对指针等的理解很弱。我是不是遗漏了什么


Thanx

表达式
sizeof(simple.Data)
返回指针的大小,而不是指针指向的对象。为什么sizeof(Data)和sizeof(simple.Data)返回不同的值?在这种情况下,它们不是都指向指针的大小吗?那太令人困惑了。指向数据的指针是3字节,而指向简单数据的指针是2字节?为什么会是这样?好吧,我想也许我开始理解得更好一些了。我将数据数组的大小更改为“data[5]”,然后再次运行代码。输出与您的评论一致。那么,我需要知道的是simple.Data的指针指向的数组中有多少个元素?也就是说,如果我给数据成员分配了一个任意大小的数组,那么我在代码中(在简单类中)所能访问的就是指针引用。那么,如何确定数组中的元素数呢?当我遇到这个问题时,这就是我想做的事情的本质。Thanx,我想我现在明白了。chris的链接为我指出了正确的问题,帮助我更好地构建了谷歌搜索框架。现在,我
sizeof(data): 3
sizeof(simple.Data): 2
65 66 67 
65 66 
65 66 67