我正在为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]);
}
}
答案 0 :(得分:1)
如何使用动态分配的内存? 在if范围之外声明一个指向int的指针。
int * timing = NULL;
当您知道数组的大小时,使用new动态分配内存。
timing = new int[NUMBER];
NUMBER是要存储在数组中的元素数。
当然,记得完成后删除分配的内存。
delete [] timing;