随笔 - 505  文章 - 1034  trackbacks - 0
<2007年12月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345


子曾经曰过:编程无他,唯手熟尔!

常用链接

留言簿(94)

随笔分类(649)

随笔档案(505)

相册

BCB

Crytek

  • crymod
  • Crytek's Offical Modding Portal

Game Industry

OGRE

other

Programmers

Qt

WOW Stuff

搜索

  •  

积分与排名

  • 积分 - 905155
  • 排名 - 14

最新随笔

最新评论

阅读排行榜

评论排行榜

1.static有什么用途?(请至少说明两种)
1.限制变量的作用域
2.设置变量的存储域
2、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。
从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

posted on 2006-07-12 16:15 七星重剑 阅读(1361) 评论(6)  编辑 收藏 引用

FeedBack:
# re: 关于static的笔试题及解答 2006-07-12 17:35 小明
哎,概念错误严重阿(我只看了最后三句)

  回复  更多评论
  
# re: 关于static的笔试题及解答 2006-07-12 19:55 阿来
@小明
怎么错了?大哥明示  回复  更多评论
  
# re: 关于static的笔试题及解答 2006-07-13 14:04 flyingxu
@小明
我也觉得这篇文章里错误多多
  回复  更多评论
  
# re: 关于static的笔试题及解答 2006-07-13 16:41 Arcrest
static该区分一下C和C++的,因为C++还有类就多了与普通成员的区别,

static函数就知道限制可见范围只在本文件中,C++中推荐用匿名namespace替代,

至于那个普通函数在内存中有拷贝就不知所云了

  回复  更多评论
  
# re: 关于static的笔试题及解答 2007-03-27 15:04 bear
函数在内存中只有一份,变化的仅是堆栈不同.
  回复  更多评论
  
# re: 关于static的笔试题及解答 2007-07-25 15:03 alexandercer(#)gmail.com
@bear
是啊,函数在调用前后在内存中是不会变化的,毕竟是经过编译后成为机器码的形式存在于内存里,而函数出入栈时,是通过保存cpu寄存器的值来保存现场环境的。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理