变量的作用域
#include<stdio.h>
int f(int a) // 定义了变量a,a的作用域从这里开始
{
int b;//定义了变量b,b的作用域从这里开始
b=a+1;
return b;
}//a,b作用域结束
main()
{
int x=1,y;//x,y的作用域只能在这个main函数
y=f(x);
}
通过上述的程序简单的表达作用域,我们来一道例题学习学习,还有c语言毕竟是一门程序语言,希望大家在编译器里面运行一下。
#include<stdio.h>
void fun(int *a,int *b)
{int *c;
c=a;a=b;b=c;
}
main()
{
int x=3,y=5,*p=&x,*q=&y;
fun(p,q);printf("%d,%d,",*p,*q);
fun(&x,&y);printf("%d,%d\n",*p,*q);
}
解释器编译出来的结果是:3,5,3,5
fun函数交换局部变量a和b的值,main调用并不改变参数的值
变量与函数的存储分类
1.静态变量(static):静态变量是在编译时分配存储空间,所占存储单元直到程序结束时才释放,它的值在程序运行过程中一直存在,且变量只初始化一次
静态变量包括全局变量和局部变量:
(1)全局变量不能使用auto.register关键字去定义全局变量;关键字static用于定义全局变量时,具有特殊含义,即限制该变量只在当前文件夹有效,不能被其他文件访问。
(2)局部变量:局部变量默认情况下为auto类型,存储在动态存储区中。
2.自动变量:auto 自动变量的存储空间是当程序执行到定义它的函数或语句块时才分配,当函数执行结束后自动释放,变量的值自动消失,每次调用函数时系统自动分配存储空间,并重新执行初始化语句。
3.寄存器变量(register):局部变量,只不过该变量不在内存而在寄存器中.
加油,加油