题解 | #嵌入式牛牛疑惑的变量#
嵌入式牛牛疑惑的变量
https://www.nowcoder.com/practice/83bce57ac2ba4f728cf091e1f35a7347
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return int整型 */ //考点static用法 和递归实现 int recursion(int n ) { static int m = 0; m = m+n; n--; if(n) recursion(n); return m; }
总结一下static关键字用法
它可以修饰变量和函数,控制其生命周期和作用域
1、局部静态变量(local static variable)
当static用于修饰局部变量时,变量的生命周期被延长为整个程序的执行期间,而不是仅仅在函数调用期间。
局部静态变量只在第一次初始化时执行初始化表达式,之后每次调用该函数时,变量都会保留之前的值。
不会在每次调用函数时重新初始化变量。
2、全局静态变量(global static variable)
当static用于修饰全局变量时,变量的作用域被限制在定义它的源文件内部。
其他源文件中的代码无法直接访问该变量,起到隐藏全局变量的作用。
3.静态函数(static function)
static 关键字也可以用来修饰函数。
当static用于修饰函数时,该函数的作用域仅限于定义它的源文件,这种做法通常用于隐藏模块的内部实现,防止命名冲突。
- 局部静态变量:生命周期为整个程序,初始化只执行一次,作用域在函数内。
- 全局静态变量:生命周期为整个程序,作用域为声明它的文件内,无法被其他文件访问。
- 静态函数:作用域限制在生命他的文件内,不能被其他文件调用。