C语言入门——变量作用域
★本篇内容简介:1.作用域概念解释——>2.局部变量——>3.全局变量——>4.补充
1.作用域概念解释
①作用域概念:
作用域是程序中定义的变量所存在的区域。
ps: 作用域(Scope),其实就是变量的有效范围,就是变量可以在哪个范围以内使用。
②作用域补充解释:
变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。
比如:
- 有的变量可以在所有代码文件中使用
- 有的变量只能在当前的文件中使用
- 有的变量只能在函数或循环块内部使用
一般见得比较多的是这两种变量:
//a.只能在函数或循环块内部使用的变量
//b.可以在所有代码文件中使用的变量
实例助解:
以最简单的C语言代码为例:
int main()
{
return 0;
}
它包含了两个作用域,一个是 main() 函数内部的局部作用域,一个是 main() 函数外部的全局作用域。
认识了作用域之后,接下来让我们一起来看一下局部变量与全局变量:
2.局部变量
在函数内部定义的变量,作用域仅限于函数内部,这样的变量称为局部变量(Local Variable)。
如实例:
#include <stdio.h>
//#include<stdlib.h>
int sum(int a1,int b1,int c1){
int sum1;//a1,b1,c1,sum1都是局部变量
sum1= a1 + b1 + c1;
return sum1;
}
int main ()
{
int a;
int b; //a,b,c,ans也都是局部变量
int c;
int ans;
a = 10;
b = 20; //变量初始化
c = a + b;
ans = sum(a,b,c);
printf ("a = %d, b = %d and c = %d ans=%d\n", a, b, c,ans);
return 0;
}
输出结果:
a = 10, b = 20,c = 30,ans=60
如图:
关于局部变量:
main()
也是一个函数,在 main() 中定义的变量也是局部变量,比如上述a,b,c,ans
都是局部变量,只能在 main() 函数内使用。- 形参也是局部变量,将实参传递给形参的过程,就是用实参给局部变量赋值的过程,其实它和
a=b
这样的赋值语句相差无几,无非一个比较直观,一个抽象些。
3.全局变量
①全局变量的概念:
C语言允许在所有函数的外部定义变量,这样的变量称为全局变量(Global Variable)。
②全局变量作用域:
全局变量的默认作用域是整个程序。
全局变量可以被任何函数访问。也就是说,全局变量在声明后整个程序中都是可用的。
③实例助解:
下面是使用全局变量和局部变量的实例:
#include <stdio.h>
int c;//全局变量声明
int main ()
{
int a, b;// 局部变量声明
a = 10;
b = 20;
c = a + b;
printf ("a = %d, b = %d,c = %d\n", a, b, c);
return 0;
}
输出结果:
a = 10, b = 20,c = 30
如图:
④补充:
在程序中,局部变量和全局变量的名称可以相同。
★ps:如果函数的参数,被当作该函数内的局部变量,与全局变量同名它们会被优先使用。
简单示例:
#include <stdio.h>
int a = 60;// 全局变量声明
int main ()
{
int a = 50;//局部变量
printf ("a = %d\n", a);
return 0;
}
输出结果:
a = 50
如图:
4.补充:
全局变量与局部变量在内存中的区别:
- 全局变量保存在内存的全局存储区中,占用静态的存储单元;
- 局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。
作者:Code_流苏(一个喜欢古诗词和编程的Coder😊)
★喜欢的话,还请多多点赞与关注! 感谢支持!
如有缺漏或者错误,还请帮忙指出!欢迎评论交流学习!