0

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

如果这是一个简单的变量,我可以在循环之外声明它,这将得到修复,但问题是我只在 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]);
  }

}
4

1 回答 1

1

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

int * timing = NULL;

当你知道数组的大小时,使用 new 动态分配内存。

timing = new int[NUMBER];

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

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

delete [] timing;
于 2019-05-18T22:58:44.463 回答