十年網站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網站問題一站解決
1、首先,我們可以在函數外面定義變量,就是全局變量。
創(chuàng)新互聯(lián)公司歡迎來電:028-86922220,為您提供成都網站建設網頁設計及定制高端網站建設服務,創(chuàng)新互聯(lián)公司網頁制作領域十余年,包括成都柔性防護網等多個領域擁有豐富的網站維護經驗,選擇創(chuàng)新互聯(lián)公司,為網站保駕護航。
2、局部變量可以與全局變量同樣命名。
3、但是優(yōu)先級是局部變量優(yōu)先。
4、但是局部變量的生命周期是整個結構內。
5、全局變量是整個程序結束,才釋放。
6、我們也可以為變量加上修飾符。
靜態(tài)變量,特點就是只初始化一次。所以在這里b是只定義一次的。
于是
1 會占用,但是很少。 和全局變量定義差不多
2 沒有,因為不存在多次定義,只定義了一次。
3 除了生命周期,最大的差別就是作用域了。
局部變量,只能在函數內訪問,而全局變量就是誰都能訪問,這樣很容易出現混亂,尤其是多線程的情況下。
除此外,非靜態(tài)的局部變量,在函數退出后內存就釋放了,如果所有變量都定義成全局的,那明顯是對內存的一種浪費。
把變量定義在主函數之外,即把變量設置為全局的。一般我們都把變量的定義放在函數中,因此變量的范圍就是在本函數中??墒侨绻x在所有函數的外面,這樣所有的函數中,都可以使用本變量。你可以試一下這個程序。定義一個全局變量a,在主函數中進行賦值,然后在子函數中進行輸出,結果是5.#includestdio.hint a;void func();//函數聲明int main(){ a=5; func();}void func(){ printf("%d\n", a);}+++++++++++++++++++++++++++++++++++++++++++++++++++當然,除了定義全局變量這個方法,還有其他的方法,那就是指針。在子函數的參數中傳遞變量的地址,依然可以使用該變量,依然能夠改變該變量的值。比如下面這個程序,在主函數中a的值為5,將變量a的地址傳遞過去,子函數將該地址中的變量的值設置為3,然后主函數輸出,結果卻是3.#includestdio.hvoid func(int *b);//函數聲明int main(){ int a=5; func(a);//把變量a的地址傳遞過去 printf("%d\n", a);}void func(int *b){ *b=3; //將地址b中變量的值設置為3}
C語言不支持這個,只能在函數外面聲明,變通的方式是,聲明指針指到在外面聲明的全局變量。