该面试题是嵌入式面试中比较常见的一个面试题,也是一个必会题,答案如下:
Static关键字,表示静态的,在C语言中的作用,是修改生命周期和限定作用域,
一般用来修饰局部变量、全局变量和函数
1、修饰局部变量 修改了局部变量的生命周期
没有用static修饰的局部变量,生命周期从变量定义开始,到变量所在作用域代码执行完毕结束。
用static修饰的局部变量,生命周期存在于程序的整个运行期间,知道程序运行结束,变量才被回收,所以过多使用静态局部变
量会造成内存泄漏
2、修饰全局变量 限定了作用域
没有使用static修饰的全局变量,作用域是整个程序(即所有的.c文件),只不过跨文件使用时,需要使用extern关键声明一下
使用static修饰的全局变量,作用域被限定在当前.c文件,不可以跨文件使用
3、修饰函数 限定了作用域
没有使用static修饰的函数,作用域是整个程序(即所有的.c文件),只不过跨文件使用时,需要使用extern关键声明一下
使用static修饰的函数,作用域被限定在当前.c文件中调用,不可以跨文件调用