最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言Static?關鍵字解析

 更新時間:2022年02月17日 17:27:19   作者:Firefly  
這篇文章主要介紹了C語言Static?關鍵字解析,C語言中staic關鍵字很簡單,簡單到你的任何一個項目中可以不寫一個staic關鍵字也是沒有問題的。寫這篇章主要是一下自己的staic的理解和應用,當然在章開頭依舊要照本宣科簡述一下static關鍵字,需要的朋友可以參考一下

01簡述

static關鍵字在嵌入式C語言當中很簡單,它有三個作用:

作用一:在函數(shù)體,一個被聲明為靜態(tài)的變量在這一函數(shù)被調用過程中維持其值不變。

void test1(void)
{
? ? unsigned char a;
? ? static unsigned char b;
? ? …
? ? a++;
? ? b++;
}

在這個例子中,變量a是局部變量,變量b為局部靜態(tài)變量。作用一說明了局部靜態(tài)變量b的特性:在函數(shù)體,一個被聲明為靜態(tài)的變量(也就是局部靜態(tài)變量)在這一函數(shù)被調用過程中維持其值不變。這個時候作用和全局變量是同的。

下面簡單的例子,聲明函數(shù)的一個局部變量,并設為static類型,作為一個計數(shù)器,這樣函數(shù)每次被調用的時候就可以進行計數(shù)。這個統(tǒng)計的方法是很好的,因為其他函數(shù)能修改這個變量(程序跑飛除外)。

void count();
int main()
{
? ? int i;
? ? for (i = 1; i <= 3; i++)
? ? {
? ? ? ? count();
? ? {
? ? ?return 0;
}
void count()
{
? ? static num = 0;
? ? num++;
? ? printf(" I have been called %d",num,"times/n");
}

輸出結果為:

I have been called 1 times.
I have been called 2 times.
I have been called 3 times.

這里注意兩點:

  • 局部靜態(tài)量的作用于仍然有改變,仍然在數(shù)內部有效
  • 局部靜態(tài)變量存儲位置變?yōu)榱藘却妫辉俅鎯υ跅@?/li>

作用二:在模塊內(但在函數(shù)體外),一個被聲明為靜態(tài)的變量可以被模塊內所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個本地的全局變量。

這樣定義的變量也稱為全局靜態(tài)變量:在全局變量之前加上關鍵字static,全局變量就被定義成為一個全局靜態(tài)變量。也就是上述作用二中提到的在模塊內(但在函數(shù)體外)聲明的靜態(tài)變量。

定義全局靜態(tài)變量的好處:

  • 它的作用域只在這個文件中,不會被其他文件所訪問,修改,是一個本地的局部變量。
  • 其他文件中可以使用相同名字的變量,不會發(fā)生沖突。

作用三:在模塊內,一個被聲明為靜態(tài)的函數(shù)只可被這一模塊內的其它函數(shù)調用。那就是,這個函數(shù)被限制在聲明它的模塊的本地范圍內使用。

這樣定義的函數(shù)也成為靜態(tài)函數(shù):在函數(shù)的返回類型前加上關鍵字static,函數(shù)就被定義成為靜態(tài)函數(shù)。

定義靜態(tài)函數(shù)的好處:

  • 其他文件中可以定義相同名字的函數(shù),不會發(fā)生沖突
  • 靜態(tài)函數(shù)不能被其他文件所用。它定義一個本地的函數(shù)。

02static關鍵字作用

對于上面講到的,static關鍵字很簡單,基本就是為了代碼模塊化。在相當一段時間內,我在工作中基本沒有用到static關鍵字,在單片機的代碼中,一般情況下一個人可以管理整個代碼工程,所以并沒有大量使用static關鍵字。的,static關鍵字很簡單,基本就是為了代碼模塊化。在相當一段時間內,我在工作中基本沒有用到static關鍵字,在單片機的代碼中,一般情況下一個人可以管理整個代碼工程,所以并沒有大量使用static關鍵字。

float DTW_Time_Difference_ms(void)
{
? static uint32_t old_counter;
? uint32_t counter,couter_current;
? couter_current = DWT_TS_GET();
? if(couter_current > old_counter)
? ? counter = couter_current - old_counter;
? else
? ? counter = couter_current + 0XFFFFFFFF - old_counter;
? old_counter = couter_current;
? return (counter / (SystemCoreClock/1000));
}

用到了static關鍵字,我也體會到了使用static關鍵字的好處,對于函數(shù)封裝有好處,當你需要將一個功能函數(shù)封裝起來,達到直接拷貝走這個函數(shù)就能用的程度,這個時候需要一個全部變量,這個時候在函數(shù)里面定義一個靜態(tài)局部變量。

到此這篇關于C語言Static 關鍵字解析的文章就介紹到這了,更多相關Static 關鍵字內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

阜新| 乌拉特后旗| 平武县| 安福县| 大荔县| 苗栗市| 房产| 福建省| 天柱县| 青海省| 湾仔区| 东光县| 吉木萨尔县| 招远市| 霸州市| 景宁| 平武县| 耒阳市| 闵行区| 游戏| 仁寿县| 团风县| 平舆县| 双桥区| 香港| 新乡市| 桑植县| 夹江县| 安乡县| 连州市| 象州县| 宜宾市| 桂阳县| 泰安市| 阳泉市| 普陀区| 交城县| 澳门| 新建县| 榆中县| 黑水县|