如何从 if 语句中设置全局数组的大小

How to set size of a global array from within if statement

我正在为 Arduino 编写这段代码。编译时,我收到错误“'timing' 未在此范围内声明”(在我尝试打印计时 [i] 的底部附近的行中),因为我在 if 语句内声明了数组我想是 while 循环。

如果这是一个简单的变量,我可以在循环外声明它,这将是固定的,但问题是我在 if 语句中只知道一次这个数组的大小。

void loop() {

  while (Serial.available()) {
    int inChar = Serial.read();

    if (isDigit(inChar)) {
      inString += (char)inChar;
    }

    if (!isDigit(inChar) && !timingExists) {
      int timing[inString.toInt()];
      inString = "";
      timingExists = true;
    }

    if (!isDigit(inChar) && timingExists) {
      timing[n] = inString.toInt();
      inString = "";
      n++;
    }

  }
  n = 0;
  for (int i = 0; i < (sizeof(timing) / sizeof(timing[0])) ; i++) {
    Serial.println(timing[i]);
  }

}

使用动态分配的内存怎么样? 在 if 范围之外声明一个指向 int 的指针。

int * timing = NULL;

并且当您知道数组的大小时使用 new 动态分配内存。

timing = new int[NUMBER];

其中 NUMBER 是您要存储在数组中的元素数。

当然,完成后记得删除分配的内存。

delete [] timing;