- 机器人等级考试
arduino 局部变量和全局变量的教程
- 2025-3-29 19:54:40 @
对于中学生来说,理解Arduino里局部变量和全局变量的区别,就像在学校里管理物品一样,下面来详细解释:
1. 定义位置
- 局部变量:就像你放在自己课桌抽屉里的东西,只能在你自己的座位附近使用。在Arduino里,它是在函数或者像
for
、while
循环这样的代码块里面定义的。比如在一个控制LED闪烁的函数里定义的变量,就属于局部变量。 - 全局变量:类似放在教室前面公共柜子里的物品,整个教室的人都能取用。在Arduino程序中,它是在所有函数的外面定义的,整个程序都能看到它。
2. 作用范围
- 局部变量:只能在定义它的那个小范围里使用。比如你在
setup()
函数里定义了一个局部变量,那么只有setup()
函数知道这个变量,loop()
函数或者其他自定义函数都用不了它。就好像你课桌抽屉里的东西,只有你自己能在座位附近用,别人不能随便到你的抽屉里拿东西用。 - 全局变量:整个程序都能使用它。不管是
setup()
函数、loop()
函数,还是你自己写的其他函数,都可以对全局变量进行操作。就像教室前面公共柜子里的物品,班里每个同学都能去取用。
3. 生命周期
- 局部变量:它的存在时间很短,从定义它的地方开始,到它所在的函数或者代码块结束就消失了。这就好比你在课堂上临时借了一支笔用,下了课就得把笔还回去,这支笔就不属于你了。
- 全局变量:从程序开始运行就存在,一直到程序结束才消失。就像教室前面的公共柜子,只要教室存在(程序运行),柜子里的物品就一直在那里,随时可以用。
4. 使用场景
- 局部变量:当你只需要在某个特定的小任务里使用这个变量时,就用局部变量。比如你在写一个函数来计算两个数的和,只在这个计算过程中需要用到一个变量来存储结果,这个变量就可以定义成局部变量。
- 全局变量:当多个函数都要用到同一个变量,或者在整个程序运行过程中都要保存这个变量的值时,就用全局变量。比如你要记录程序运行的总次数,这个变量就可以定义成全局变量,因为很多函数可能都要用到这个次数。
代码示例帮助理解
// 全局变量,在所有函数外面定义
int globalVariable = 10;
// setup函数,程序开始时运行一次
void setup() {
// 局部变量,在setup函数内部定义
int localVariable = 5;
// 可以使用全局变量和局部变量
Serial.begin(9600);
Serial.print("全局变量的值: ");
Serial.println(globalVariable);
Serial.print("局部变量的值: ");
Serial.println(localVariable);
}
// loop函数,程序开始后不断循环运行
void loop() {
// 可以使用全局变量,但不能使用setup函数里的局部变量
globalVariable = globalVariable + 1;
Serial.print("在loop函数里,全局变量的值变为: ");
Serial.println(globalVariable);
delay(1000);
}
在这个例子中,globalVariable
是全局变量,setup()
和loop()
函数都能使用它;localVariable
是局部变量,只有setup()
函数能使用它。
1 条评论
-
admin SU @ 2025-3-29 20:00:00
为了便于理解Arduino里局部变量和全局变量的区别,我们可以把Arduino程序想象成一个社区,变量就像是社区里的居民,下面从不同方面进行详细解释:
1. 居住地点(定义位置)
- 局部变量:就像居住在社区某个特定房子里的居民。在Arduino程序中,局部变量定义在函数或者代码块(像
for
循环、if
语句等)内部。例如,在一个控制舵机转动的函数中定义的变量,它就只属于这个函数的“小房子”。 - 全局变量:如同住在社区中心广场附近的居民,大家都能很容易找到他。在Arduino里,全局变量定义在所有函数的外面,能被整个程序“看到”。
2. 活动范围(作用范围)
- 局部变量:只能在它居住的“房子”里活动。也就是说,在定义它的函数或者代码块内部,才能使用这个局部变量。一旦离开了这个范围,程序就好像找不到这个变量了。比如,在
loop()
函数中定义的局部变量,setup()
函数就没办法使用它。 - 全局变量:可以在整个社区自由活动。在Arduino程序里,全局变量在任何函数中都能被使用和修改。不管是
setup()
函数,还是其他自定义函数,都可以对全局变量进行操作。
3. 停留时间(生命周期)
- 局部变量:就像来社区短期旅游的游客,只在特定的时间段内存在。在Arduino中,局部变量从定义它的地方开始“出现”,当所在的函数或者代码块执行结束,它就“离开”了,也就是不再存在于程序中。
- 全局变量:类似于长期定居在社区的居民,从程序开始运行就一直存在,直到程序结束才“消失”。只要程序在运行,全局变量就一直可用。
4. 用途差异(使用场景)
- 局部变量:当你只需要在某个特定的小任务中使用一个变量时,就可以使用局部变量。比如,在一个函数里进行临时的计算,这个计算结果只在这个函数内部有用,那就可以把这个变量定义为局部变量。
- 全局变量:当多个不同的任务都需要用到同一个变量,或者在整个程序运行过程中都要保存这个变量的值时,就适合使用全局变量。例如,记录程序运行的总次数,因为很多函数可能都需要知道这个次数,所以可以把记录次数的变量定义为全局变量。
代码示例辅助理解
// 全局变量,定义在所有函数外面 int globalCount = 0; // setup函数,程序开始时运行一次 void setup() { Serial.begin(9600); } // loop函数,程序开始后不断循环运行 void loop() { // 局部变量,定义在loop函数内部 int localCount = 0; // 局部变量在每次进入loop函数时重新初始化 localCount++; // 全局变量在整个程序运行过程中持续累加 globalCount++; Serial.print("局部变量的值: "); Serial.println(localCount); Serial.print("全局变量的值: "); Serial.println(globalCount); delay(1000); }
在这个示例中,
globalCount
是全局变量,在整个程序运行过程中持续累加;localCount
是局部变量,每次进入loop()
函数都会重新初始化为0。 - 局部变量:就像居住在社区某个特定房子里的居民。在Arduino程序中,局部变量定义在函数或者代码块(像
- 1