• <span id="qootd"></span>
      1. <track id="qootd"></track><acronym id="qootd"></acronym>

        不要誤以為關鍵字static 很安靜,其實它一點也不安靜。這個關鍵字在C 語言里主要有兩個作用,C++對它進行了擴展。

        一、修飾變量

        第一個作用:修飾變量。變量又分為局部和全局變量,但它們都存在內存的靜態區。
        靜態全局變量,作用域僅限于變量被定義的文件中,其他文件即使用extern 聲明也沒法使用他。準確地說作用域是從定義之處開始,到文件結尾處結束,在定義之處前面的那些代碼行也不能使用它。想要使用就得在前面再加extern ***。惡心吧?要想不惡心,很簡單,直接在文件頂端定義不就得了。

        靜態局部變量,在函數體里面定義的,就只能在這個函數里用了,同一個文檔中的其他函數也用不了。由于被static 修飾的變量總是存在內存的靜態區,所以即使這個函數運行結束,這個靜態變量的值還是不會被銷毀,函數下次使用時仍然能用到這個值。
        static int j;
        void fun1(void)
        {
           static int i = 0;
           i ++;
        }
        void fun2(void)
        {
           j = 0;
           j++;
        }
        intmain()
        {
           for(k=0; k<10; k++)
           {
              fun1();
              fun2();
           }
           return 0;
        }
        i 和j 的值分別是什么,為什么?

        二、修飾函數

        第二個作用:修飾函數。函數前加static 使得函數成為靜態函數。
        但此處“static”的含義不是指存儲方式,而是指對函數的作用域僅局限于本文件(所以又稱內部函數)。使用內部函數的好處是:不同的人編寫不同的函數時,不用擔心自己定義的函數,是否會與其它文件中的函數同名。

        關鍵字static 有著不尋常的歷史。起初,在C 中引入關鍵字static 是為了表示退出一個塊后仍然存在的局部變量。隨后,static 在C 中有了第二種含義:用來表示不能被其它文件訪問的全局變量和函數。為了避免引入新的關鍵字,所以仍使用static 關鍵字來表示這第二種含義。

        當然,C++里對static 賦予了第三個作用,這里先不討論,有興趣的可以找相關資料研究。
        免責聲明:本文僅代表作者個人觀點,著作權歸作者所有。其原創性以及文中陳述文字和內容(包括圖片、視頻、附件等)未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請用戶僅作參考,并請自行核實相關內容。轉載作品務請注明出處,機構云平臺、個人云空間的建設權、管理權、所有權均歸實名機構和實名師生所有,與世界大學城無關。
        標簽:C語static關鍵字—言最名不符實的關鍵字
        還能輸入 2000 個html字符
        色偷偷