变量作用域
Coddy C 语言中的函数 课程的第 5 课,共 17 课。
每个变量都有作用域,也就是程序中可以使用它的部分。变量可以是全局变量,也可以是局部变量。
局部变量
局部变量在代码块内部创建,例如在函数中创建,并且只在该代码块中存在。代码块开始时会为这些变量分配内存,代码块结束时会释放内存,同时移除这些变量。
#include <stdio.h>
void message() {
char *msg = "Coddy";
printf("%s \n", msg);
}
int main(void) {
char *title = "tech";
message();
printf("%s \n", title);
return 0;
}在 message 函数中,定义了变量 msg。同样,main 函数中定义了变量 title。这些变量在各自的函数之外不可用。例如,我们不能在 main 函数中使用变量 msg,因为它的作用域仅限于 message 函数。
同样的原则也适用于在嵌套代码块中定义的变量,例如 if、else、switch、case、for、while 和 do..while 循环中的变量。
全局变量
全局变量定义在程序文件中,位于所有函数之外。该文件中的任何函数都可以使用这些变量。
#include <stdio.h>
int a = 12;
void increment()
{
a++;
printf("a=%d \n", a);
}
int main(void)
{
increment();
a++;
printf("a=%d \n", a);
return 0;
}输出:
a=13
a=14 这里,变量 a 对所有函数都可见,因为它是在全局范围内声明的。
挑战
简单试着使用全局变量:
- 在所有函数外定义一个名为
<strong>gv</strong>的全局变量,并将它的值设为 20。 - 修改
increment函数,让它使用这个全局变量。 - 编写一个新的
decrement函数,让它减少全局变量的值并打印该值。 - 在
main函数中打印这个变量的值。
输出应如下所示:
Global variable after increment: 21
Global variable after decrement: 20
Global variable in main: 20 亲手试试
#include <stdio.h>
// 定义一个名为 gv 的全局变量,并将其值设为 20
// 修改 increment 函数
void increment() {
printf("Global variable after increment: %d \n", gv);
}
// 定义 decrement 函数
int main(void) {
increment();
decrement();
// 打印该变量
return 0;
}
C 语言中的函数中的所有课
自己练习: C 在线编译器