C語言中static和auto用法詳解
static的第一種用法:定義為靜態(tài)變量
何為靜態(tài)變量?存儲(chǔ)在靜態(tài)數(shù)據(jù)區(qū)的變量會(huì)在程序剛開始運(yùn)行時(shí)就完成初始化,也是唯一的一次初始化。就是只進(jìn)行一次初始化。不理解?看代碼!
代碼見真知:
#include<stdio.h> int main() { void fun(); //定義一個(gè)空函數(shù) for(int i=0;i<3;i++) { fun(); //調(diào)用函數(shù) } return 0; } void fun() { int i=0; static int static_i=0; printf("沒有加static的結(jié)果為:%d\n",i); printf("加了static的結(jié)果為:%d\n",static_i); i++; //沒有加static,i最終都會(huì)被初始化為0 static_i++; //加了static,只初始化一次,后面繼續(xù)累加 printf("\n"); }
運(yùn)行結(jié)果:
由結(jié)果可以看出有static的在持續(xù)累加,除了第一次沒有再初始化。
static的第二種用法:有理說不清,直接代碼見真知
#include<stdio.h> int main() { int i,sum; sum=2; for(i=0;i<3;i++) { //外置模塊 printf("外置模塊為:%d\n",sum); sum++; //內(nèi)置模塊 { static int sum=1; //局部重新定義sum的初始值 printf("內(nèi)置模塊為:%d\n",sum); sum++; } printf("\n"); } return 0; }
運(yùn)行結(jié)果:
由結(jié)果可見:外置模塊和內(nèi)置模塊是互不影響的,這就是static的第二種用法,保持局部一部分穩(wěn)定,不會(huì)隨外部的變化而變化。
auto的用法:直接代碼見真知
#include<stdio.h> int main() { int i,sum; sum=2; for(i=0;i<3;i++) { //外部 printf("外置模塊為:%d\n",sum); sum++; //局部 { auto int sum=1; printf("內(nèi)置模塊為:%d\n",sum); sum++; } printf("\n"); } return 0; }
代碼看不懂?結(jié)合運(yùn)行結(jié)果就懂了:
由結(jié)果顯而易見:外置模塊持續(xù)累加,內(nèi)置模塊全部為1,與static的第二種用法相比較,auto局部不斷進(jìn)行初始化 ,而static是局部除第一次外不再初始化。
static和auto的相同之處是都能只在局部進(jìn)行改變,與外置模塊互不干涉。
總結(jié)
到此這篇關(guān)于C語言中static和auto用法詳解的文章就介紹到這了,更多相關(guān)C語言static和auto內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于實(shí)現(xiàn)Qt秒表設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了基于實(shí)現(xiàn)Qt秒表設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08C基礎(chǔ) 尋找隨機(jī)函數(shù)的G點(diǎn)詳解
下面小編就為大家?guī)硪黄狢基礎(chǔ) 尋找隨機(jī)函數(shù)的G點(diǎn)詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06C語言 詳細(xì)講解接續(xù)符和轉(zhuǎn)義符的使用
接續(xù)符是用來告訴編譯器行為的符號(hào),那編譯器遇到接續(xù)符是什么行為呢,就是去掉接續(xù)符,然后把下一行連接到現(xiàn)在這行上面,轉(zhuǎn)義符是主要用于表示無回顯字符,也用于表示常規(guī)字符,轉(zhuǎn)義符必須放在單引號(hào)或者雙引號(hào)里面2022-04-04