- 函数内的形参在该函数被调用前不占用内存的存储单元;该函数被调用后,形参才被分配内存单元;函数调用结束,形参所占用的内存也将被回收,被释放(即:形参只有在定义它的函数内才是有效的,离开该函数就不能再使用)
- 变量的有效范围或变量的应用范围称为该变量的作用域。
- 按照变量的作用、域范围可分为两种,即全局变量和局部变量。
一、局部变量
在函数内部或块内定义的变量称为局部变量
int function(int a,int b)
{
int x,y;
................
}
a,b,x,y只在function函数中有效
main()
{
int m,n;
}
变量m,n只在函数内部有效
局部变量的注意事项
- 主函数main中定义的变量(m、n)只在主函数中有效,并不是因为在主函数中定义,而在整个文件或程序中有效。因为主函数也是一个函数,它与其他函数是平行的关系。
- 不同的函数中可以使用相同的变量名,他们代表不同的变量,之间互不干扰。
- 在一个函数内部,还可以在复杂语句(块) 中定义变量,这些变量只在本复合语句中有效。
- 如果局部变量的有效范围有重叠,则有效范围小的优先。
#include "stdio.h"
void main()
{
// ****a,b,c作用域开始*****
int a,b,c;
{
// 作用域范围小的的优先
int c;
c=a+b;
}
// ****a,b,c作用域结束*****
}
二、全局变量
在函数之外定义的变量称为全局变量,又称外部变量。一个源文件由若干个函数组成,全局变量可以为本文件中的其他函数所共有,它的有效范围是从定义点开始,直到源文件结束。
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
int min; // 全局变量min
int find()
{
int max,x,i;
x=rand()%101+100; // 产生一个[100,200]的随机数x
printf(" %d",x);
max=x;min=x; // 设定最大数和最小数
for(i=1;i<10;i++)
{
x=rand()%101+100; // 产生一个[100,200]的随机数x
printf(" %d",x);
if(x>max) // 若新产生的随机数大余最大数,则替换
max=x;
if(x<max) // 若新产生的随机数小余最大数,则替换
min=x;
}
return max;
}
void main()
{
int m = find();
printf("\n最大数:%d,最小数:%d\n",m,min);
}
三、自动类型变量
四、寄存器类型变量
五、静态类型变量