范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

C语言块级变量在代码块内部定义的变量

  所谓 代码块 ,就是由 { }  包围起来的代码。代码块在C语言中随处可见,例如函数体、选择结构、循环结构等。不包含代码块的C语言程序根本不能运行,即使最简单的C语言程序(上节已经进行了展示)也要包含代码块。
  C语言允许在代码块内部定义变量,这样的变量具有块级作用域;换句话说,在代码块内部定义的变量只能在代码块内部使用,出了代码块就无效了。
  上节我们已经讲解了函数,在函数内部定义的变量叫做局部变量,这节我们接着讲解选择结构和循环结构。
  【实例1】定义一个函数 gcd(),求两个整数的最大公约数。 #include   //函数声明 int gcd(int a, int b); //也可以写作 int gcd(int, int);  int main(){ printf("The greatest common pisor is %d ", gcd(100, 60)); return 0; }  //函数定义 int gcd(int a, int b){ //若a  int sum(int m, int n);  int main(){ printf("The sum from 1 to 100 is %d ", sum(1, 100)); return 0; }  int sum(int m, int n){ int sum = 0; for(int i=m; i<=n; i++){ //i是块级变量 sum += i; } return sum; }
  变量 i 定义在循环条件里面,所以是一个块级变量,它的作用域就是当前 for 循环,出了 for 循环就无效了。
  如果一个变量只在 for 循环内部使用,就可以将它定义在循环条件里面,这样做可以避免在函数开头定义过多的变量,使得代码结构更加清晰,所以我鼓励大家这样做,当然,前提是你的编译器支持。
  【实例2】定义一个函数 strchar(),查看给定的字符是否位于某个字符串中。 #include  #include   int strchar(char *str, char c);  int main(){ char url[] = "http://c.biancheng.net"; char letter = "c"; if(strchar(url, letter) >= 0){ printf("The letter is in the string. "); }else{ printf("The letter is not in the string. "); } return 0; }  int strchar(char *str, char c){ for(int i=0,len=strlen(str); i int main(){ int n = 22; //编号① //由{ }包围的代码块 { int n = 40; //编号② printf("block n: %d ", n); } printf("main n: %d ", n);  return 0; }
  运行结果:
  block n: 40
  main n: 22
  这里有两个 n,它们位于不同的作用域,不会产生命名冲突。{ } 的作用域比 main() 更小,{ } 内部的 printf() 使用的是编号为②的 n,main() 内部的 printf() 使用的是编号为①的 n。 再谈作用域
  每个C语言程序都包含了多个作用域,不同的作用域中可以出现同名的变量,C语言会按照从小到大的顺序、一层一层地去父级作用域中查找变量,如果在最顶层的全局作用域中还未找到这个变量,那么就会报错。
  下面我们通过具体的代码来演示: #include   int m = 13; int n = 10;  void func1(){ int n = 20; { int n = 822; printf("block1 n: %d ", n); } printf("func1 n: %d ", n); }  void func2(int n){ for(int i=0; i<10; i++){ if(i % 5 == 0){ printf("if m: %d ", m); }else{ int n = i % 4; if(n<2 && n>0){ printf("else m: %d ", m); } } } printf("func2 n: %d ", n); }  void func3(){ printf("func3 n: %d ", n); }  int main(){ int n = 30; func1(); func2(n); func3(); printf("main n: %d ", n);  return 0; }
  下图展示了这段代码的作用域:
  蓝色 表示作用域的名称, 红色 表示作用域中的变量, global  表示全局作用域。在灰色背景的作用域中,我们使用到了 m 变量,而该变量位于全局作用域中,所以得穿越好几层作用域才能找到 m。

长庆油田总部搬迁,西安的欢欣鼓舞与庆阳的豁然大度近年来,我国经济迅猛发展,城乡面貌日新月异,人民生活水平发生了翻天覆地的变化,然而这一切成绩的取得最终还是我国国力的增强尤其是工业的日益见长,作为工业的血液,石油化工尤其是油气勘探福建省城市级别划分3个二线城市,3个三线城市,3个四线城市福建省是我国经济大省,已经连续多年蝉联我国前十。这与福建省这些年加快招商引资具有很大关系,在过去的2022年中,纳入省级跟踪的全省重大招商项目有420个,累计完成投资直接达到了20广东城市深圳未来城市扩容是向东还是向西?深圳,是全国最成功的经济特区,当年画的那个圈价值万万亿元,并且起到示范作用,给到中国经济主体极强活力。深圳既是一个年轻城市,也是成功和进取的城市,未来深圳还要再打造经济翻倍的体量,中型银行联盟致信美财政部等机构呼吁为未来两年所有存款提供保险据彭博社当地时间18日报道,美国中型银行联盟向美国财政部联邦储蓄保险公司货币监理局以及美联储致信,要求在未来两年,将联邦储蓄保险公司的保险范围扩大到所有存款,相关费用由银行自身承担高密市落实一揽子好政策,提升制造业核心竞争力实施梯次培育工程落实服务派单制度开展企业家周活动今年,高密市围绕以亲情化高端化为核心的两化服务企业要求,聚力把支持企业发展的各项好政策落到实处,以提升企业核心竞争力为主攻方向,创新四川宜宾一小酒厂,曾靠贴牌维生,如今市值破百亿,太励志上世纪90年代,我国白酒市场可谓是风起云涌,热闹非凡。各大酒厂为了抢占市场份额,纷纷选择与中小型酒厂进行合作,生产贴牌酒。可是由于缺少市场监管,很多贴牌酒的品质忽高忽低,这就引起了中国境外投资增加全球碳排放?事实可能恰恰相反导读有观点认为,中国境外能源基建等项目增加了东道国的碳排放。这种观点忽略了东道国发展经济的需求,仅将中国投资后的碳排放水平与原始状态作简单比较,逻辑片面。事实上,由于中国能源项目的中国中车又一项目开工一期投资近59亿可配套300万台新能源车摘要3月18日,一期投资近59亿元的中车中低压功率器件产业化项目在江苏无锡宜兴经开区开工,产品主要用于新能源汽车领域,预计明年全面投入量产,达产后可新增年产36万片中低压组件基材的美国还有186家银行可能暴雷我们的选择?隔岸观火文行走斯图卡美国演员莎朗斯通日前在一次慈善活动上发表演讲时,控诉因为最近的银行危机损失了一半的积蓄虽然我们不知道她损失的是什么资产,但作为中国人我们很乐意向她表示慰问,并且告诉她这加密市场一级市场二级市场到底是什么!大家好!我是晨宇,启辰社区创始人。从业加密二级市场7年,经历过加密二级市场交易的跌宕起伏,目前以短线操作为主,分享交易经验,一起在二级市场实现持续稳定的盈利。目前,加密市场与传统股金融监管机构改革有什么实际意义吗?头条创作挑战赛今天继续说说机构改革的话题,这次机构改革重点在金融领域,比如金融全部变成行政编制。中国人民银行国家金融监督管理总局中国证券监督管理委员会国家外汇管理局及其分支机构派出
从华为mate40pro换到mate50pro,不吹不黑,憋了满肚子的话想说作为一个老花粉确实好不容易抢到了华为mate50pro,之前的mate40pro也是今年入得二手的,前前后后摔了不少次,但是真的好用,最近也是图新鲜,想体验一下最新的昆仑玻璃所以入别让手机奴役了我们手机独白俺叫手机,身高约半尺,宽约几寸。曾用名有(手提电话,大哥大,掌中宝)等。自五十年前第一台俺的前辈问世以来,便受到无数时尚人士的热捧。从刚开始的1G到现在的5G时代,期间横跨评分合理了?DXO公布iPhone14Pro成绩比前代提升了5分虽然DXO的评分数据已经没什么说服力了,但还是可以看看的,不合理再说。近日DXO就公布了iPhone14Pro的最新相机评分,拿下了146分的成绩,相比第一名仅差1分,比第三名的P支付宝和微信的提现的手续费到底给谁了?随着移动支付渗透人们的生活中,人们不再带着现金出门,到哪都是使用微信支付或者支付宝支付,这些支付都是需要绑定我们的银行卡的。最近刷到几条短视频,感觉挺好笑的,里面的内容大致是微信和是谁偷走了我们的流量?互联网时代,手机已成为我们不能离手的重要物品,而各种应用都离不开网络支持,手机流量尤为重要,因此生活中,当我们享受着手机带来的便利和乐趣时,也有不少人在抱怨流量用得太快,想当然认为恒大还有救吗?烂尾楼9月12日又看到许老板出来发声要求恒大全国706个保交楼项目在9月30日必须全面复工,截止9月21日恒大公告称,公司已复工668个,未复工38个,已复工的668个项目中,有6李书福出手!吉利控股收购阿斯顿马丁部分股权继沃尔沃戴姆勒路特斯等国际汽车品牌之后,李书福再次出手,这次收购的是英国著名百年汽车品牌的股份。9月30日晚,浙江吉利控股集团有限公司(吉利控股)有关人士对上证报记者确认,吉利控股欧洲制造业大量外流,美国成最大受益者,美国给欧洲挖下了天坑俄乌冲突,随着时间的推移,对全世界的影响已经越来越大。战争造成的影响是有区域性的,但辐射而来的,经济层面的影响。已经波及了全世界大部分国家。通胀加息粮食能源,现在来看这场战争,真的芯片大厂,跌跌不休过去很长一段时间困扰全球半导体业的芯片短缺,似乎有了明显的缓解。反映到资本市场上,由于市场需求放缓和芯片制造商的库存增加,整个半导体行业将出现低迷,于是投资者开始纷纷抛售半导体巨头征信查询,哪些影响贷款?个人征信报告上最后一条公共信息是查询记录,其作用就是记录贷款(信用卡)申请人在金融机构申请时的查询日期查询机构和查询原因。查询分这几大类本人查询信用卡审批法人高管等资格审查担保资格10月起,三轮车抢量大战,五羊宗申淮海美缔,都出手了请您在阅读前,先点击上面的关注。感谢您的支持,我们将为您带来更多有价值的内容。三轮车行业一直有着金九银十的说法,眼下已来到旺季时节,不少企业铆足了劲保障供应,想在旺季大干一场。最近