您好,登錄后才能下訂單哦!
C語言中怎么使用static關鍵字,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
C語言的關鍵字static在有三個作用:聲明靜態函數,聲明靜態全局變量,聲明靜態局部變量
聲明靜態函數
在函數的返回類型前加個static,就是靜態函數了。靜態函數只能在聲明它的文件中使用,其他文件看不到它。而不同的文件可以使用相同名字的靜態函數,互不影響。非靜態函數可以在另一個文件中直接引用,甚至不必使用extern聲明
聲明靜態全局變量
全局變量定義在函數體外部,編譯器會自動對其初始化。普通全局變量,對整個Kernel可見;而靜態全局變量僅對當前文件可見,其他文件不可訪問。因此,如果定義的全局變量(或函數)不需要與其他文件共享,建議加上static來降低程序之間的耦合。
聲明靜態局部變量
局部變量就是函數內部定義的變量,其作用域比全局變量小很多。編譯器一般不對普通局部變量進行初始化,也就是說它的值在初始時是不確定的,除非對其顯式賦值。而使用了static的靜態局部變量,即使在聲明時未賦初值,編譯器也會把它初始化為0。而且靜態局部變量的存儲位置也不同,即使函數返回了,它的值也會保持不變
再把它們的地址與系統內存布局對比一下
得出以下結論:
1 靜態函數在Shell里不可見,全局函數在Shell里可見
2 不管哪種函數,都存儲于系統的文本段中
3 有初值的全局變量(無論是否靜態變量),以及有初值的靜態局部變量,存儲于系統的數據段中
4 無初值的全局變量(無論是否靜態變量),以及無初值的靜態局部變量,存儲于系統的BSS段中,被初始化為0
5 局部變量(非靜態,無論有無初值),存儲于任務的棧中。如未賦初值,則使用0xeeeeeeee
看完上述內容,你們掌握C語言中怎么使用static關鍵字的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。