重要c语言全局变量和局部变量问题汇总

重要c语言全局变量和局部变量问题汇总

ID:30964798

大小:82.00 KB

页数:5页

时间:2019-01-04

重要c语言全局变量和局部变量问题汇总_第1页
重要c语言全局变量和局部变量问题汇总_第2页
重要c语言全局变量和局部变量问题汇总_第3页
重要c语言全局变量和局部变量问题汇总_第4页
重要c语言全局变量和局部变量问题汇总_第5页
资源描述:

《重要c语言全局变量和局部变量问题汇总》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C语言全局变量和局部变量问题汇总1、关键字static的作用是什么?定义静态变量2、static有什么卅途?(请至少说明两种)网上答案:1)•限制变轴的作用域(在程序的整个运行期间都不禅放)2)•设置变量的存储域(存储在静态存储区内)谭浩强C语言page180:(1)对局部变最用static声明,则为该变最分配的空间在整个程序执行期间始终存在;(2)全局变量用static声明,则该变量的作用域只限于木文件模块谭浩强C语言page182的说明将以上两种答案联系在--起,有助于理解static的作用:static对于局部变量和全局变量的作

2、用不同。对局部变最来说,它是变最由动态存储方式改变为静态存储方式。对于全局变最来说,它使变量局部化(局部于木文件),但仍为静态存储方式。从作用于角度看,凡是static声明的,其作用域都是有限的,静态局部变量局限丁•本函数内,静态外部变量局限于本文件内。3、全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态存储区,局部变量在堆栈。华为:4、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。要用全局变量,需要使用“::”局部变量可以少全局变虽:同名,在函数内引用这个变量吋,会用到同名的局部变量,而不会用到全局

3、变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变最,比如在两个循环体内都定义一个同名的局部变量,而局部变量的作用域就在定义的循环体內。5、如何引用一个已经定义过的全局变量?关键字extern的使川说明答:用关键字extern作外部变最声明(1)用extern可以在一个文件内声明外部变量(谭浩强CPage176)(2)也可以在多文件的程序屮声明外部变量。(谭浩强CPage177)网上的答案是:可以川引川头文件的方式,但是对于这个说法,笔者之前试着用过,记得是不可以,在不同的源文件中包含这个头文件时,在程序连接时会出现重复

4、定义multiplepublicdefinitions的错渓,而在不同的源文件屮使用这个变赧时,也会出现multiplepublicdefinitions的错误,所以笔者没有使用这种方法,而是使用关键字extern网上的另一个答案是:也可以用extern关键字,也就是在具屮一个源文件屮定义外部变量,而在另外使用该变量的源文件开始的位置将这个变量用关键字extern声明。网上:如果用引用头文件方式来引用某个在头文件屮声明的全局变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern方式引用吋,假定你犯了同样的错误,那么在

5、编译期间不会报错,而在连接期间报错。6、全局变量对不町以定义在町被多个.C-文件包含的头文件中?为什么?网上答案:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的金局变量,而提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。笔者按照以上说法去试,出现了“重复定义”的错误,分析:因为变量的定义只能出现一次,否则会导致重复定义。但却可以声明多次。全局变量定义在头文件屮。当该头文件被多个c文件包含的话,就会导致重复定义。所以全局变量不可以定义在头文件中。网上对这道题有人这样说:一般做法是在

6、某个特定的头文件屮声明,而在另外一个特定的c文件中定义。需要使用就包含前者。此处的声明我认为应该用extern,不过没有去实践。7、static全局变最与普通的全局变最有什么区别?static局部变最和普通局部变最有什么区别?static函数与普通函数有什么区别?全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变最当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变疑的作用域是整个源程序,当一个源程序由多个源文件组成吋,非静态的全局变量在各个源文

7、件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同-•源程序的其它源文件屮不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当

8、前源文件以外使用的函数,应该在一个头文件中说明,耍使用这些函数的源文件要包含这个头文件。static全局变量与普通的全局变量有什么区别:static全局变量只初始化一次,防止在其他文件单元中被引用;static局部变量和

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。