一.程序块【复合语句】
①程序块:C语言中成对大括号构成的代码,也叫复合语句
#include <stdio.h>
void test()
{
printf("test\n");
}
int main()
{
int a = 1;
for (a = 1; a < 15; a++)
{
//for循环也是一个程序块
}
return 0;
}
②以上代码中的程序块有三个:
①void test()
{
}
②int main()
{
}
③for循环
二.作用域
①定义:变量生效的范围
②分类:C语言中变量作用域有两种:块作用域和文件作用域
三.块作用域
①在程序块中声明的变量,只在该程序块中通用,其他区域都无效,这样的作用域称为块作用域,一般针对局部变量。
②代码:
代码1:正常输出25
int main()
{
{
int a = 25;
printf("%d\n", a);
}
return 0;
}
代码2:无法正常输出
int main()
{
{
int a = 25;
printf("%d\n", a);
}
printf("%d\n", a);//错误,变量a无法在大括号外部使用
return 0;
}
运行结果:
③局部优先:
代码:
int main()
{
int a = 35;
{
int a = 25;
printf("%d\n", a);
}
printf("%d\n", a);
return 0;
}
运行结果:
每个作用域会优先使用当前作用域声明的变量
④for循环
代码1:
int main()
{
for (int i = 0; i < 10; i++)
printf("%d\n", i);
return 0;
}
代码2:报错
int main()
{
for (int i = 0; i < 10; i++)
printf("%d\n", i);
printf("%d\n", i);
return 0;
}
运行结果:
四.文件作用域
①在函数的外部声明变量(全局变量),从声明位置到文件全部结束都有效,全局变量具有文件作用域
代码1:
void test()
{
printf("%d\n", i);
}
int i = 17;
int main()
{
printf("%d\n", i);
return 0;
}
代码2:
int i = 17;
int main()
{
printf("%d\n", i);
return 0;
}
运行结果:
i=17代码1中的void test()不可用