在一对{}内定义的变量,其定义域仅其下方且在该{}内的复合语句.
外部变量 又称为 全局变量
内部变量 又称为 局部变量
1.squarness
#include<stdio.h>
int area;//外部变量:函数之外的变量
main()
{
int volume,length;//内部变量:函数之外的变量
printf("input length,width,height=");
scanf("%d",&length);
squareness_volume(length);
}
int v;//该外部变量声明对本行以下起效果,包括函数内外
int squareness_volume(int l)
{
v=l*l*l;
area=l*l*6;//该内部变量声明仅对本行以下且在本函数内起效果
printf("volume:%d area:%d",v,area);
}
2.max min average
#include<stdio.h>
float max=0,min=0;//(static)静态存储变量程序开始时,由系统分配内存空间,直到程序结束
int main()
{
int time=10,i;
float score[10];
float average(float array[],int t);
printf("分别输入10个score:");
for(i=0;i<time;i++)
{
scanf("%f",&score[i]);
}
printf("max=%f,min=%f,average=%f",max,min,average(score,time));
}
float average(float array[],int t)//形式参数属于局部变量
{
int i;//(auto)动态存储变量,需要时产生,用完销毁
float aver,sum=array[0];
max=min=array[0];
for(i=1;i<t;i++)
{
if(array[i]>max)
max=array[i];
else if(array[i]<min)
min=array[i];
sum+=array[i];
}
aver=sum/t;
return aver;
}
运行:
3.一到五的阶乘(静态局部变量)
#include<stdio.h>
int fac(int n)
{
static int f=1;//静态局部变量.作用域仅为改函数,但该函数运行结束后不销毁该变量
f=f*n;
return f;
}
int main()
{
int i;
for(i=1;i<=5;i++)
{
printf("%d!=%d ",i,fac(i));
}
}
运行:
4.静态全局变量
file 1
#include<stdio.h>
static char a[]="静态全局变量";
file 2
#include<stdio.h>
extern char a;//外部存储变量声明,不创建新的存储空间
int main()
{
printf("%s 不能被本程序文件外的程序调用\n",a);
}
start without debugging : build failed