該面試題是嵌入式面試中比較常見的一個(gè)面試題,也是一個(gè)必會(huì)題,答案如下:
Static關(guān)鍵字,表示靜態(tài)的,在C語言中的作用,是修改生命周期和限定作用域,
一般用來修飾局部變量、全局變量和函數(shù)
1、修飾局部變量 修改了局部變量的生命周期
沒有用static修飾的局部變量,生命周期從變量定義開始,到變量所在作用域代碼執(zhí)行完畢結(jié)束。
用static修飾的局部變量,生命周期存在于程序的整個(gè)運(yùn)行期間,知道程序運(yùn)行結(jié)束,變量才被回收,所以過多使用靜態(tài)局部變
量會(huì)造成內(nèi)存泄漏
2、修飾全局變量 限定了作用域
沒有使用static修飾的全局變量,作用域是整個(gè)程序(即所有的.c文件),只不過跨文件使用時(shí),需要使用extern關(guān)鍵聲明一下
使用static修飾的全局變量,作用域被限定在當(dāng)前.c文件,不可以跨文件使用
3、修飾函數(shù) 限定了作用域
沒有使用static修飾的函數(shù),作用域是整個(gè)程序(即所有的.c文件),只不過跨文件使用時(shí),需要使用extern關(guān)鍵聲明一下
使用static修飾的函數(shù),作用域被限定在當(dāng)前.c文件中調(diào)用,不可以跨文件調(diào)用