首先从作用域考虑:
C++里作用域可分为6种:全局,局部,类,语句,命名空间和文件作用域。
全局变量 - 全局作用域,可以通过extern作用于其他非定义的源文件。
静态全局变量 - 全局作用域+文件作用域,所以无法在其他文件中使用。如果俩个文件定义了相同名字的静态局部变量,那他们是俩个不同的变量,而非一个。
局部变量 - 局部作用域,比如函数的参数,函数内的局部变量等等。
静态局部变量 - 局部作用域,只被初始化一次,直到程序结束。
从所在空间考虑:
除了局部变量在栈上外,其他都在静态存储区。因为静态变量都在静态存储区,所以下次调用函数的时候还是能取到原来的值。