首页 > 编程知识 正文

全局和局部变量的区别,c语言全局变量作用域

时间:2023-05-03 09:56:40 阅读:149381 作者:3392

C语言的变量是什么? 局部变量和全局变量是什么? 它们在编写程序的过程中起什么作用? 今天的授课者向大家详细介绍局部变量和全局变量的概念和作用。

函数的参数和返回值表明,参数变量在调用函数之前不会分配内存,而是在调用后立即释放内存。 这表示s形变量只能在函数内部使用,如果离开该函数,则会禁用。

作用域是指变量的有效范围。 除了s形变量外,c语言中的所有变量都有自己的作用域。 决定变量作用域的是变量的定义位置。

局部变量

局部变量(LocalVariable )简单来说就是函数内部定义的变量,其作用域仅限于函数内部,在离开函数后无效,重用时会报告错误。 例如:

intF1(inta ) {

intb、c; //a、b、c只在函数f1 ) )内有效

returna b c;

}

intmain ()。

intm,n; //m,n是函数main ) )内有效

返回0;

}

在此,需要注意以下四点。

由main函数定义的变量也是局部变量,只能在main函数中使用,而在main函数中不能使用其他函数定义的变量。 main函数也是一个函数,与其他函数处于同等地位。

自变量变量、函数体内定义的变量均为局部变量。 传递实际参数类型参数值的过程是为局部变量赋值的过程。

不同的函数可以使用同一个变量名,它们表示不同的数据,分配不同的内存,互不干扰,不会混淆。

语句块也可以定义变量,其范围仅限于当前语句块。

局部变量的任意例子如下所示(图1 )

图1

全局变量

全局变量(GlobalVariable )简单来说就是在所有函数外部定义的变量,其范围缺省为整个程序,即包括. c和. h文件在内的所有源文件。 例如:

inta,b; //全局变量

voidfunc1() {

//TODO:

}

floatx,y; //全局变量

intfunc2() {

//TODO:

}

intmain ()。

//TODO:

返回0;

}

a、b、x、y都是在函数外部定义的全局变量。 c语言代码从面向后依次被执行,x,y在函数func1()之后被定义,因此在func1) )内是无效的。 另一方面,a、b在源程序的开头定义,因此在func1(,func2)、main )内有效。

请看局部变量和全局变量的代码示例。

代码示例1 :输出变量的值:

#包含

intn=10; //全局变量

voidfunc1() {

intn=20; //局部变量

printf(func1n:%dn ',n );

}

voidfunc2(intn ) {

printf(func2n:%dn ',n );

}

voidfunc3() {

printf(func3n:%dn ',n );

}

intmain ()。

intn=30; //局部变量

func1(;

func2(n;

func3(;

//代码块用{}括起来

{

intn=40; //局部变量

printf(blockn:%dn ),n );

}

printf (主: % dn ),n );

返回0;

}

执行结果:

func1n:20

func2n:30

func3n:10

blockn:40

主:30

代码中定义了多个同名的变量n,但由于它们的范围不同,存储器内的位置(地址)也不同,因此是相互独立的变量,相互不影响,不会发生重复定义错误。

func1(),输出结果为20,显然使用了函数内部的n,不是外部的n的func2) )也一样。 如果全局变量和局部变量同名,则在局部范围内全局变量将被“屏蔽”,并且不再起作用。 或者,变量的使用遵循近邻原则,如果当前范围内存在同名变量,则不会在更大的范围内寻找变量。

func3) )输出10,使用全局变量。 func3) )函数中不存在局部变量n,因此编译器只能在函数外部,即全局范围内查找变量n。

用{ }括起来的代码块也具有独立的作用域,printf ()使用其自身内部的变量n,输出40。

C语言规定,只能从小范围到大范围寻找变量,不能反过来执行,使用小范围变量。 main ) )函数的输出结果为30,因为它使用在(main ) )函数开头定义的n,即使代码块中的n接近输出语句。

代码示例2 :根据长方体的纵横高度求出其体积和3个面的面积。

#包含

ints1、s2、s3; //面积

intvs(inta,intb,intc ) {

intv; //体积

v=a*b*c;

s1=a*b;

s2=b*c;

s3=a*c;

returnv;

}

intmain ()。

intv,length,width,height;

printf (输入长度,宽度: );

scanf(%d%d%d )、length、width和height );

v=vs(length,width,height );

printf(v=%d,s1=%d,s2=%d,s3=%d\n ',v,s1,s2,s3 );

返回0;

}

执行结果:

输入长度,widthandheight:102030 .财

v=6000,s1=200,s2=600,s3=300

根据预先确定的目标,用一个函数得到三个值。 分别为体积v和三个面的面积s1、s2、s3,但由于c语言函数只有一个返回值,因此只将其中一个数据(即体积v )放入返回值中,并将面积s1、s2、s3设定为全局变量。 全局变量的范围是整个程序,它会影响其他函数,包括函数vs (如果在中更改s1、s2和s3的值,则为main )。

这次的简单解读局部变量和全局变量教程到此已告一段落,如果有补充,请在此继续补充,欢迎大家继续补充。 最后,我希望本教程对大家学习c语言有帮助。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。