如何从 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;
我正在为 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;