永发信息网

static 问题

答案:4  悬赏:0  手机版
解决时间 2021-04-27 04:55
  • 提问者网友:最美的风景
  • 2021-04-26 23:07
static全局变量和普通全局变量的区别?static局部变量和普通局部变量的区别?static函数和普通函数的区别?
最佳答案
  • 五星知识达人网友:往事埋风中
  • 2021-04-26 23:33

1、static全局变量和普通全局变量:都存储在同一个区域上——全局区(静态区),程序结束时由系统释放,似乎没什么区别;


2、static变量不管是全局的还是局部的,都存储在全局区(静态区),普通局部存储在栈上,程序执行完这个“局部”区,系统将该普通局部变量出栈,释放掉;而static局部变量退出“局部”区不会释放掉,但它的作用范围只能在定义它的那个“局域”里;


3、static函数和普通函数:跟变量差不多吧,只是变量是存储在变量区,函数是存储在代码区里;

全部回答
  • 1楼网友:不想翻身的咸鱼
  • 2021-04-27 02:28

全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就 是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同 。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文 件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作 用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。 由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可 以避免在其它源文件中引起错误。

把局部变量改变为静态变量后是改变了它的存储方式即改变了它的 生存期(静态局部变量在程序运行结束释放空间,而普通静态局部变量在函数退出时释放空间)。 把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明 为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以 外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 (用static声明的即内部函数,内部函数指只能被本文件的其他函数所调用的函数, 内部函数在C++实际上可以通过类名修饰符访问 其他均为外部函数)

  • 2楼网友:青尢
  • 2021-04-27 01:40
可见问题,全局变量是全局可见,但是static只在他的作用域内可见。但是生存周期是一样的
  • 3楼网友:执傲
  • 2021-04-27 00:01

http://msdn.microsoft.com/zh-cn/library/98f28cdx(vs.80).aspx

你去看看对有帮助没··

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯