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

时间:2019-05-18 21:27:52

标签: arrays scope arduino-c++

我正在为Arduino编写此代码。编译时,出现错误“未在此范围内声明'timing'”(在我尝试打印计时[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]);
  }

}

1 个答案:

答案 0 :(得分:1)

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

int * timing = NULL;

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

timing = new int[NUMBER];

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

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

delete [] timing;