- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
谭浩强c 课件2 作用域 存储类 数组 结构体图文文库
块作用域我们把用花括号括起来的一部分程序称为一个块。在块内说明的标识符,只能在该块内引用,即其作用域在该块内,开始于标识符的说明处,结束于块的结尾处。 在一个函数内部定义的变量或在一个块中定义的变量称为局部变量。 a,b,c有效m,n有效x,y,i,j 有效在函数内或复合语句内部定义的变量,其作用域是从定义的位置起到函数体或复合语句的结束。形参也是局部变量。float f1( int a){ int b,c; .....}void main(void ){ int m, n; .....}float f2( int x, int y){ int i, j; .....}主函数main中定义的变量,也只在主函数中有效,同样属于局部变量。10x20x不同的函数可以使用相同名字的局部变量,它们在内存中分属不同的存储区间,互不干扰。void main(void){ int x=10; { int x=20; coutxendl; } coutxendl;}定义变量既是在内存中开辟区间2010注意:具有块作用域的标识符在其作用域内,将屏蔽其作用块包含本块的同名标识符,即变量名相同,局部更优先。5232bcabavoid main(void){ int a=2, b=3, c=5; couta‘\t’b‘\t’cendl; { int a, b=2; a=b+c; couta‘\t’b‘\t’cendl; } c=a-b; couta‘\t’b‘\t’cendl;}-17 3 57 2 52 3 -1void main(void){ int a=1,b=2,c=3; ++a; c+=++b; {int b=4, c; c=b*3; a+=c; cout“first:”a‘\t’b‘\t’cendl; a+=c; cout“second:”a‘\t’b‘\t’cendl; } cout“third:”a‘\t’b‘\t’cendl;}a=2b=3, c=6b=4c=12a=14a=14,b=4,c=12a=26a=26,b=4,c=12a=26,b=3,c=6文件作用域 在函数外定义的变量称为全局变量。全局变量的作用域称为文件作用域,即在整个文件中都是可以访问的。 其缺省的作用范围是:从定义全局变量的位置开始到该源程序文件结束。当在块作用域内的变量与全局变量同名时,局部变量优先。 int p=1, q=5;float f1( int a){ int b,c; .....}a,b,c有效p,q有效char c1,c2;main( ){ int m, n; .....}c1,c2有效m,n有效全局变量局部变量全局变量增加了函数间数据联系的渠道,在函数调用时可以得到多于一个的返回值。cba全局变量int min;int max (int x, int y){ int z; min=(xy)?x : y; z=(xy)? x : y ; return z;}01minmin 在main( )和max( )中均有效,在内存中有唯一的存储空间。144xyz函数值为4void main (void){ int a,b,c; cinab; c=max (a , b) ; cout“The max is”cendl; cout“ The min is”minendl;}144The max is 4The min is 1 在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。ab35a885abint a=3, b=5;int max(int a, int b){ int c; c=ab? a:b; return c;}void main(void){ int a=8; coutmax(a,b)endl;}max (8,5)输出:8int x;void cude(void){ x=x*x*x ;}void main (void){ x=5; cude ( ); coutxendl;}输出: 125x为0输出: 5int x=5;在块作用域内可通过作用域运算符“::”来引用与局部变量同名的全局变量。 #include iostream.hint i= 100;void main(void){ int i , j=50; i=18;//访问局部变量i ::i= ::i+4;//访问全部变量i j= ::i+i;//访问全部变量i和局部变量j cout”::i=”::i’\n’; cout”i=”i’\n’; cout”j=”j’\
文档评论(0)