局部变量与全局变量

定义变量的三种情况:
1.在函数的开头定义;
2.在函数内的复合语句内定义;
3.在函数外部定义;

一、局部变量:
函数内定义的变量是局部变量。
在一个函数内部定义的变量只在本函数范围内有效,只有在本函数内才能引用,在此函数以外不能使用这些变量。
在复合语句内定义的变量只在本复合语句范围内有效,只有在本复合语句内才能引用,在该复合语句以外是不能使用这些变量。

(1)主函数中定义的变量也只在主函数中才有效,主函数也不能使用其他函数当中定义的变量。
(2)不同函数中可以使用同名的变量,它们代表不同的对象,互不干扰。
(3)形式参数也是局部变量。
(4)在一个函数的内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这些符合语句也被称为“分程序”或“程序块”。

二、全局变量
在函数之外定义的变量称为外部变量,外部变量是全局变量。
全局变量可被本文件中其他函数所共用,有效范围从定义变量的位置开始到本源文件夹结束。

全局变量的作用是增加函数间数据联系的渠道。

例:
#include<stdio.h>
float Max=0,Min=0; //Max,Min是全局变量,在函数外定义,可以在主函数还有函数c中起作用
int main()``
{
float c(float a[],int n); //定义函数c
float b[10],pj; //b[10],pj是局部变量,且只在main函数内有效
int i; //i是局部变量,且与函数 c中的i代表的对象不同,所以二者互不干扰
for(i=0;i<10;i++)
scanf("%f",&b[i]);
pj=c(b,10);
printf(“平均数=%.2f,最大数=%.2f,最小数=%.2f\n”,pj,Max,Min);
getchar();
getchar();
return 0;
}

float c(float a[],int n)
{
int i; //i是局部变量
float z,s=a[0]; //z,s是局部变量,且只在函数c中有效
Max=Min=a[0];
for(i=1;i<n;i++)
{
if(a[i]>Max)
Max=a[i];
else if(a[i]<Min)
Min=a[i];
s=s+a[i];
}
z=s/n;
return(z);
}

建议不在必要时使用全局变量的原因:
(1)全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。
(2)使函数的通用性降低,因为函数在执行时需要依赖其所在的外部变量。
(3)使用全局变量过多会降低程序的清洗性。

当全局变量与局部变量同名时:
例:求a,b中大的数
#include<stdio.h>
int a=3,b=5; //此处的a,b是全局变量
int main()
{
int max(int a,int b); //声明函数,a,b是形参
int a=8; //a是局部变量 局部变量a的作用范围 全局变量a被局部变量a屏蔽
printf(“max=%d\n”,max(a,b)); //全局变量b的作用范围 max(a,b)=max(8,5)
return 0;
}
int max(int a,int b) //a,b是函数形参 形参a,b的作用范围
{
int c; //c是局部变量
c=a>b?a:b; //把a,b中大的存放在c中
return©;
}
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值