静态属性与普通属性的区别是什么?

(1)static全局变量与普通全局变量的区别:

  全局变量的说明前加上static构成静态全局变量

  全局变量本身就是静态储存方式,静态全局变量当然也是静态储存方法。这两者储存方式是没有区别的。

  区别:

    非静态全局变量作用域是整个源程序,当一个源程序是由多个源文件组成是声明的非静态全局变量在,在每一个源文件中都是有效的。

    而静态全局变量则限制了其作用域,只在其声明的源文件中有效。在同一源程序中其他未声明的源文件不能使用它。

(2)静态变量和局部变量的区别:

  把局部变量改成静态变量后,改变了他的储存方式、改变了他的生存期,静态变量在程序中只初始化一次,再调用时下一次依据上一次的值、

(3)静态static函数与普通函数的区别:

  static在函数在内存中只存在一份

  普通函数每调用一次复制一次参数、

用static修饰的函数,本限定在本源码文件中,不能被本源码文件以外的代码文件调用。而普通的函数,默认是extern的,也就是说,可以被其它代码文件调用该函数。
  在函数的返回类型前加上关键字static,函数就被定义成为静态函数。普通 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。因此定义静态函数有以下好处:
  <1> 其他文件中可以定义相同名字的函数,不会发生冲突。
  <2> 静态函数不能被其他文件所用

原文地址:https://www.cnblogs.com/ahaijava/p/10176504.html