Arduino 检查uint8\u t数组是否为空

Arduino 检查uint8\u t数组是否为空,arduino,uint8t,Arduino,Uint8t,如果我声明以下内容(包含类似{0x7E,0x00,…}的十六进制): 我打印的是: void printHex(uint8_t* hex) { for(unsigned int i=0; i<sizeof(hex)/sizeof(hex[0]); i++) { if(hex[i] < 16) { Serial.print("0"); } Serial.print(hex[i], HEX); } } 即使我没有用任何值初始化变量。 问题

如果我声明以下内容(包含类似{0x7E,0x00,…}的十六进制):

我打印的是:

void printHex(uint8_t* hex) {

  for(unsigned int i=0; i<sizeof(hex)/sizeof(hex[0]); i++) {
    if(hex[i] < 16) {
      Serial.print("0");
    }
    Serial.print(hex[i], HEX);
  }

}
即使我没有用任何值初始化变量。
问题是,我无法判断变量是否已使用值初始化。如何做到这一点?为什么它不初始化就打印上面的内容?

你不能用C来确定指针数组的大小。你必须传入数组的长度,除非它是静态分配的。但是,传入指针的情况并非如此。

在C中无法确定指针数组的大小。必须传入数组长度,除非它是静态分配的。但是,在传递指针时,情况并非如此

void printHex(uint8_t* hex) {

  for(unsigned int i=0; i<sizeof(hex)/sizeof(hex[0]); i++) {
    if(hex[i] < 16) {
      Serial.print("0");
    }
    Serial.print(hex[i], HEX);
  }

}
0088FE3FF0FBFE3FA0382040A0ECFE3FAE10204001000000DCEBFE3FC033204018000000BC981800