免费获客网站、免费获客平台、免费产品获客【风起获客】风起获客
  • 首页
  • 供应商
  • 采购商
  • 找企业
  • 找产品
  • 论坛
登录 / 注册

c语言中局部变量和全局变量的区别是什么,C语言中 局部变量和全局变量的概念?

shukaiseng1
2024-09-23
23
分享

专业互联网培训机构——完成蜕变以后轻松拿高薪

电话+V:159999-78052 ,欢迎咨询c语言局部变量与全局变量是什么,[python实用课程],[C++单片机原理],[C#、PHP网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]

一、c语言中局部变量和全局变量的区别是什么

1.全局变量是在所有函数外部定义的变量,其作用域为整个程序,包括所有.c和.h文件。因此,全局变量对于整个程序来说是可见的。使用全局变量时,应确保其名称清晰易懂,避免名称冲突,并避免在全局作用域中使用大量不必要的变量。

2.局部变量是在特定函数或过程中定义的变量,它们的作用域仅限于定义它们的函数或过程内部。局部变量是相对于全局变量而言的,它们在函数执行时创建,函数执行完毕后释放。局部变量通常存储在程序的栈区,这意味着它们在函数调用时被分配,函数调用结束后被销毁。

二、局部变量,全局变量

在编程中,理解变量的作用域是非常关键的。主要分为局部变量和全局变量两种。

局部变量,也被称为内部变量,是在函数内定义的。它们的作用域仅限于函数内部,离开该函数就不能再使用这些变量。局部变量的使用范围明确,易于管理和避免冲突。例如,形参和实参的变量名相同,不会产生混淆。同时,即使在主函数中定义变量,也只能在主函数内使用,且主函数也不能访问其它函数中定义的变量,这与其它编程语言有所不同。

全局变量,则被称为外部变量,是在函数外部定义的变量。它不属于任何特定函数,而是属于整个程序文件,作用域覆盖整个源程序。在函数中使用全局变量时,通常需要进行全局变量说明。全局变量的说明符是extern,但在程序文件的开头定义的全局变量,在该文件的任何函数内使用时,可以不再重复声明。

在C语言中,变量存储类别也是划分变量生命周期的重要方式。存储类别包括静态存储方式和动态存储方式。

静态存储方式意味着变量在程序运行期间分配固定存储空间,整个程序执行期间这些变量的存储单元保持不变。而动态存储方式则是在程序运行时根据需要分配和释放存储空间。全局变量存储在静态存储区,从程序开始执行时分配空间,程序结束时释放。动态存储区则用于函数形式参数、自动变量(未加static声明的局部变量)以及函数调用时的现场保护和返回地址。

自动变量是函数中的局部变量,若未特别声明为static存储类别,则它们是动态分配存储空间的。函数调用结束后,自动释放这些存储单元。静态局部变量则属于静态存储类别,在程序整个运行期间不释放。未初始化的静态局部变量编译时自动赋初值,而自动变量不初始化时,其值是不确定的。

为了提高程序执行效率,C语言允许将局部变量的值存储在CPU寄存器中,这类变量称为寄存器变量。但要注意的是,寄存器变量只能是局部自动变量或形式参数,且寄存器数目有限,不能定义任意多个。静态变量不能定义为寄存器变量。

外部变量,即全局变量,其作用域从定义处开始,直到整个程序文件结束。在文件的开头定义外部变量后,在文件的任何位置引用该变量都是合法的。如果需要在函数之前引用外部变量,则应使用关键字extern进行声明,表示该变量已经在定义处被声明。

三、C语言中局部变量和全局变量的概念?

局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内,离开该函数后再使用这种变量是非法的。

例如:

intf1(inta)/*函数f1*/

{

intb,c;

……

}

a,b,c有效

intf2(intx)/*函数f2*/

{

inty,z;

……

}

x,y,z有效

main()

{

intm,n;

……

}

m,n有效

在函数f1内定义了三个变量,a为形参,b,c为一般变量。在f1的范围内a,b,c有效,或者说a,b,c变量的作用域限于f1内。同理,x,y,z的作用域限于f2内。m,n的作用域限于main函数内。关于局部变量的作用域还要说明以下几点:

1)主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。同时,主函数中也不能使用其它函数中定义的变量。因为主函数也是一个函数,它与其它函数是平行关系。这一点是与其它语言不同的,应予以注意。

c语言局部变量与全局变量是什么

2)形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。

3)允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。如在前例中,形参和实参的变量名都为n,是完全允许的。

4)在复合语句中也可定义变量,其作用域只在复合语句范围内。

例如:

main()

{

ints,a;

……

{

intb;

s=a+b;

……/*b作用域*/

}

……/*s,a作用域*/

}

【例8.12】

main()

{

inti=2,j=3,k;

k=i+j;

{

intk=8;

printf("%d",k);

}

printf("%d",k);

}

本程序在main中定义了i,j,k三个变量,其中k未赋初值。而在复合语句内又定义了一个变量k,并赋初值为8。应该注意这两个k不是同一个变量。在复合语句外由main定义的k起作用,而在复合语句内则由在复合语句内定义的k起作用。因此程序第4行的k为main所定义,其值应为5。第7行输出k值,该行在复合语句内,由复合语句内定义的k起作用,其初值为8,故输出值为8,第9行输出i,k值。i是在整个程序中有效的,第7行对i赋值为3,故以输出也为3。而第9行已在复合语句之外,输出的k应为main所定义的k,此k值由第4行已获得为5,故输出也为5。

8.8.2全局变量

全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern。但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。

例如:

inta,b;/*外部变量*/

voidf1()/*函数f1*/

{

……

}

floatx,y;/*外部变量*/

intfz()/*函数fz*/

{

……

}

main()/*主函数*/

{

……

}

从上例可以看出a、b、x、y都是在函数外部定义的外部变量,都是全局变量。但x,y定义在函数f1之后,而在f1内又无对x,y的说明,所以它们在f1内无效。a,b定义在源程序最前面,因此在f1,f2及main内不加说明也可使用。

【例8.13】输入正方体的长宽高l,w,h。求体积及三个面x*y,x*z,y*z的面积。

ints1,s2,s3;

intvs(inta,intb,intc)

{

intv;

v=a*b*c;

s1=a*b;

s2=b*c;

s3=a*c;

returnv;

}

main()

{

intv,l,w,h;

printf("inputlength,widthandheight");

scanf("%d%d%d",l,w,h);

v=vs(l,w,h);

printf("v=%d,s1=%d,s2=%d,s3=%d",v,s1,s2,s3);

}

【例8.14】外部变量与局部变量同名。

inta=3,b=5;/*a,b为外部变量*/

max(inta,intb)/*a,b为外部变量*/

{intc;

c=a>b?a:b;

return(c);

}

main()

{inta=8;

printf("%d",max(a,b));

}

【WINDRISES EMPLOYMENT PROGRAMMING】尊享对接老板

电话+V: 159999-78052

机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。

c语言局部变量与全局变量是什么
相关帖子
  • 01
    小新air14打不开百度网盘,折腾笔记本 篇二:群晖百度网盘官网套件使用体验、速度、功能测试
    245
  • 02
    闲鱼怎么设置商品库存?发前几天的库存照片怎么发
    165
  • 03
    航拍遥控器摇杆名称,4k航拍无人机如何激活
    152
  • 04
    怎么正确抱小狗?抱狗姿势有讲究,这5种抱狗法,只会让狗狗讨厌你!
    143
  • 05
    手机怎么使用短信查询中国移动的话费和流量详情,中国移动怎么查去年话费
    136
  • 06
    电脑上面散热器进水了怎么办,网上买的笔记本外置散热器有水雾
    127
  • 07
    小红书的文案都有哪些套路?微博和小红书文案区别是什么
    126
  • 08
    微信小程序开发成本多少?小程序开发价格大概多少?
    124
  • 09
    家里漏水怎么办找谁修,家里水管漏水,别傻傻缠胶带了!在漏水处贴上它,立马就能止住!
    120
  • 10
    oracle数据库如何修改密码?mysql数据库密码怎么设置
    117
  • 11
    人工智能的通俗理解|人工智能领域有多强?这里有惊人的实例证明!
    112
  • 12
    这个话筒放大器怎么与卡侬线对接,要加1.5v电池,有线麦克风的电池在哪里
    110
  • 13
    汽车美容生活实例,汽车美容包括什么?
    109
  • 14
    在注塑机上,机械手怎样能够完好的取出塑料产品,如摩托车的把手?急需...注塑机械手采购前的必读攻略
    103
  • 15
    眼睛黄斑是怎么回事,眼白黄斑是什么原因
    96
相关广告
广告图
联系方式 微信
引擎网址:
百度
雅虎
360
谷歌
必应
本站导航:
首页
找供应商
找采购商
找企业
找产品
论坛
站点地图
友情链接:
太平洋
中关村
阿里巴巴
凤凰
新浪
腾讯
网易
搜狐
百度
交换链接:
免费获客网站、免费获客平台、免费产品获客【风起获客】
粤ICP备2024275337号-1 地址:广州市中山大道西1344号神秘花园1F1002 24小时服务热线:15999978052 联系QQ:1258690818 隐私条款
广州风起网络科技有限公司 Copyright © 2020 - 2026