找回密码
 注册
关于网站域名变更的通知
查看: 385|回复: 3
打印 上一主题 下一主题

[ARM资料] 嵌套代码块

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-4-28 14:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
位于括号内的语句集称为代码块或复合语句。注意,包括main在内的所有函数都使用复合语句。代码块具有字节的声明语句和其他语句。一个代码块又位于某个函数体或另一个代码块之中,这样创建的代码块称为嵌套代码块。
& @2 a. d6 j. G6 G0 V9 Dmain()
: K1 T2 [  f4 ]) X$ U5 R7 f* \{5 k* d# J$ B" Z3 N: w) i
       inta=20;  K7 K6 E; W( o! }: w) L
       intb=10;! s6 D' U) C5 l! N" @0 w
       ......
( ?! w* s* \- j, c4 Y9 \0 x       {" e8 n. f7 t% y. r8 b1 ~. Q6 {5 x& t0 P
              inta=0;5 Z6 [, A4 ^" w
              intc=a+b;
+ U8 W8 c) X$ k              ......* p! B- G" i0 x3 [
       }
: X# s! \' T. V& p1 Z6 o       b=a;0 j) ?8 f* y* |( l5 ^* b- E
}
) M8 B, I9 `: r# G& N; J/ q当运行该程序时,c的值为10,而不是30.语句b=a把a的值10赋给b。尽管a的作用范围到main的末尾,但由于内部代码块又声明了变量a,因此在内部代码块中是不可见的。但是,当离开内部代码块时,内部的a不再在其作用范围之内,外部的a又变为可见的了。
0 _2 G4 Y6 M2 R( Z* j& F记住,变量b在内部代码块中没有重新声明,因此它对这两个代码块都是可见的。这就是为什么当计算下面语句时:( Z! B* A, A6 c: z+ o
int c=a+b;
8 s. |- C% B  X# o0 Y$ ]( [3 B: I! c( Ta的值为0,而b的值为10.
! Z  [+ ]0 y' q) {' P' Mmain函数的变量对内部代码块是可见的,反过来则不对。
9 E$ D8 E' z# }关于作用范围的规范
4 s, }8 C- T9 V& X; D作用范围: |, F+ e5 X; V6 i6 i6 B' }- Y! [
指的是变量可用的程序区间。
% R7 \( o( H' N5 t" W9 d可见性
. l) D" x9 u% L! H2 q程序可以从内存访问变量的能力" a, ?1 u; S8 ]! B
生存期; Q1 X2 `" ?$ k8 K& Y7 k* J0 T) C
程序运行时,变量存在的时间。! }# M9 ?4 x! c& k1 ~
使用规则
3 W# h% [" u2 S' ]3 r(1)      全局变量的作用范围是整个程序文件。$ W8 o7 I, [9 U6 E/ G
(2)      局部变量的作用范围是从该变量的声明位置开始,直到声明它的代码块或函数末尾为止。8 h) X; x3 j. D" T
(3)      函数形参的作用范围为函数本身内。0 R2 ]5 s9 r7 y) q6 N6 W9 v
(4)      在main中的声明的auto变量的生存期为整个程序运行时间,尽管其作用范围为main函数内。8 d3 `7 M7 b# N4 b( \. y
(5)      当函数退出时,auto变量的生存期结束。
9 c: m' g2 g4 B/ A; {2 ?(6)      尽管static变量的作用范围为其函数内,但其生存期一直到程序运行结束。. p0 n8 c; g* r; W
(7)      如果不重新进行声明,左右变量只在其作用范围内是可见的。% x8 F5 f. I+ ^
(8)      如果某个变量在其作用范围内重新进行声明,那么在重声明变量的作用范围内。

该用户从未签到

4#
发表于 2019-7-22 18:09 | 只看该作者
谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 23:27 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表