久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

關鍵字static在C語言里的用法

作者:啄木鳥   來源:啄木鳥   點擊數:  更新時間:2014年06月14日   【字體:
關鍵字static在C語言里主要有兩個作用:
1.修飾變量
變量分為局部和全局變量,但是都存于內存的靜態區。靜態全局變量的作用域僅局限于變量被定義的文件中,其他文件即使使用extern也沒法使用,其范圍準確的說是從定義之初開始,到文件結尾處結束。在其前面定義的代碼行也不能使用。
靜態局部變量,在函數體里面定義的,就只能在這個函數里用了,同一個文檔中的其他函數也用不了。由于被static 修飾的變量總是存在內存的靜態區,所以即使這個函數運行結束,這個靜態變量的值還是不會被銷毀,函數下次使用時仍然能用到這個值。

2.修飾函數
函數前加static 使得函數成為靜態函數。但此處“static”的含義不是指存儲方式,而是指對函數的作用域僅局限于本文件(所以又稱內部函數)。使用內部函數的好處是:不同的人編寫不同的函數時,不用擔心自己定義的函數,是否會與其它文件中的函數同名。
關鍵字static 有著不尋常的歷史。起初,在C 中引入關鍵字static 是為了表示退出一個塊后仍然存在的局部變量。隨后,static 在C 中有了第二種含義:用來表示不能被其它文件訪問的全局變量和函數。為了避免引入新的關鍵字,所以仍使用static 關鍵字來表示這第二種含義。

對于第一個作用,我們可以用下面的列子來解釋一下:
static j;

void fun1(void)
{
   static i=0;
   i++;
}

void fun2(void)
{
   j=0;
   j++;
}

void main()
{
    for(k=0;k<10;k++)
       {
            fun1();
            fun2();
       }
}
i和j的值分別為什么?為什么?
解析:先對j分析,由j在文件開頭定義,可知其為靜態全局變量,在fun2函數里,每次都先j = 0;先將j賦值為0,再++,最后結果自然是1。
      對于i而言,他是在fun1函數體內定義的局部變量,但是,因為他用static修飾了,所以此定義語句只執行一次。后面的循環直接都跳過此定義語句。因為用static修飾的變量,在他的作用域內,定義語句就只執行一次。所以j的結果為10.
:以上為個人學習時的一點筆記,路過的朋友,如果有錯誤的話,請指正!!謝謝``~``
關閉窗口

相關文章

主站蜘蛛池模板: 91精品国产一二三 | 午夜视频免费 | www日本高清 | 精品一区二区三区四区 | 龙珠z国语版在线观看 | 91欧美精品成人综合在线观看 | 在线超碰 | 国产精品国产三级国产aⅴ中文 | 国产精品大片在线观看 | 亚洲一区二区免费视频 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 九九热在线观看 | 国产一区二区三区免费 | 无码日韩精品一区二区免费 | 精品国产免费一区二区三区演员表 | 久久香蕉网 | 亚洲 欧美 另类 综合 偷拍 | 欧美激情一区二区三级高清视频 | 久久久久久网站 | 国产精品美女在线观看 | 九九久久在线看 | 一区二区三区免费观看 | 国产欧美日韩久久久 | 国产欧美日韩综合精品一区二区 | 一道本不卡| 亚洲国产成人精品女人 | 男女视频在线观看网站 | 老司机午夜性大片 | 精品久久一区 | 视频一区在线观看 | 91xh98hx 在线 国产 | 久久伊人免费视频 | 亚洲欧美一区在线 | 亚洲激情综合网 | 99reav| 国产精品国产三级国产aⅴ中文 | 国产成人在线视频免费观看 | 亚洲成人三级 | 中文字幕亚洲区一区二 | 水蜜桃久久夜色精品一区 | 亚洲精品在线看 |