前言
欢迎来到我的博客
个人主页:北岭敲键盘的荒漠猫-CSDN博客
本文主要整理c语言中
与作用域相关的知识点
本文适合对象:无编程基础,因为解释的比较多,所以不适合有基础的人快速掌握了
作用域描述
其实就是起作用的区域。比如个变量,函数内定义的,就只能在这个函数中使用,一旦运行区域离开了函数,那么这个变量就无法使用了。
作用域分类
文件作用域
函数作用域
代码块作用域
各作用域介绍与案例
文件作用域
这个作用域一般是在函数外面进行定义,定义变量完以后这个定义表达式下面的所有函数都能使用这个变量。
案例演示:
#include <stdio.h>
int n = 5;
int putnum()
{
printf("函数调用:%d", n);
}
int main()
{
printf("主函数调用:%d\n", n);
putnum();
}
这个案例中,我们把n变量的定义放到了函数的外面,那么他下面的这些函数都能使用这个变量。
但是如果我们把它放到putnum函数的下面。
#include <stdio.h>
int putnum()
{
printf("函数调用:%d", n);
}
int n = 5;
int main()
{
printf("主函数调用:%d\n", n);
putnum();
}
原因就是。在外面的变量作用域是他的下面,上面的函数是不能用的。
(但是我觉得这些理解多此一举,程序从上到下执行,他不知道有这个变量完事。)
函数作用域
描述:就是,我在这个函数中定义的 变量,他就无法在其他的函数中使用了。
#include <stdio.h>
int main(){
int n=5;
printf("主函数调用:%d\n", n);
putnum();
}
int putnum()
{
printf("函数调用:%d", n);
}
这个代码中,我们只在main函数中定义了n,但是没在putnum函数中定义,所以他是无法使用n的。
代码块作用域
描述:{}代码块中定义的变量也是单独的,外面用不了。
案例演示:
可以看到,代码块里面的变量能够识别变量n,a。
但是我们代码块外面的,识别不到a,会产生报错。
小总结
其实从上面的案例都可以整理出一个整体的规律。
大的范围可以给小的范围使用。
但是小范围定义的东西不能给大范围使用。
程序是自上而下执行的,通常上面的可以给下面的用,下面的不能给上面的用。
全局变量与局部变量
概念
就。。。巨简单。
函数外面定义的就是全局变量,全局都能用。
函数里面定义的就是局部变量,只能在对应函数中使用。
嗯,没必要举例子了吧~。。。
extern拓展作用域
描述:全局变量,文件作用域中的变量。这些变量的作用域是他们的下面的函数可以使用。
也就是说,他们的上面的函数是无法使用的。
如果我们想要上面的函数也能够使用,就要用extern进行拓展。
但本质上,就是像函数的声明一样,在上方声明一下。
案例演示:
#include <stdio.h>
int exper()
{
printf("函数内输出:%d", a);
}
int a = 1;
int main()
{
printf("主函数内输出:%d", a);
exper();
}
运行可以看到,exper中无法使用a变量,会报错。
但是我们用上extern就会解决上面这个不能用的问题
#include <stdio.h>
extern int a;
int exper()
{
printf("函数内输出:%d", a);
}
int a = 1;
int main()
{
printf("主函数内输出:%d", a);
exper();
}