- 论坛徽章:
- 11
|
本帖最后由 Ager 于 2012-08-17 09:51 编辑
zhaohongjian000 发表于 2012-08-16 15:53 ![]()
直接的误导意义还差不多。假设我不知道static是啥意思,那既然“在定义的形式上,局部变量定义于某个由大括号“{}”所形成的局部代码区域之内,而全局变量这是直接定义在源文件中,不隶属于任何局部代码区域。”那为什么还需要static来区分局部变量?这逻辑能通?更不用说static用在自动变量和外部变量时涵义不同的事儿了。
zhaohongjian000 发表于 2012-08-16 16:35 ![]()
无意冒犯,但你应该补补基础知识。
static的两个作用:1.用在外部变量上,限定这个变量是内部链接。2.用在自动变量上,改变这个变量生存期(变成静态生存期)。
这两点跟局部变量/全局变量都没有关系。
赞,这个要顶……:)
C语言就是这副德性:范畴(维度)比较多(但每个维度上的变化量取值域倒并不是很庞大)—— 这跟C语言本身与计算机底层更“亲近”这个固有属性有密切的关系 —— 这也正是C可以利用“比较简单(简洁)的语言书写”来编写出功能丰富甚至复杂的程序的主要原因。
这些范畴有:链接属性(外vs内vs前vs无)、生存期(静vs动)、作用视界(函vs元vs{ }vs Prototype)、初始化规格、定义规格、Segments/Sections(.text, .rodata, .plt, .data, .bss……)等等等等 —— 这些范畴结合在一起,好比一个高维空间,有很多个坐标轴,且每个坐标轴都与其他轴垂直(正交)。
因此,那种不考虑范畴的多样性而断言“static跟局部变量/全局变量有关”的阐释方法,就跟在一个狭窄的见识领域里声称“减法一定是大数减小数”一样粗陋了。
再次支持楼主:)
以上,经供参考,呵呵……
|
|