了解 C 中的靜態變量 [附編碼示例]
已發表: 2020-10-21在您的編程之旅中,您可能已經解決了大多數變量。 對於任何程序員來說,它們都是一個非常重要的方面,因為聲明變量決定了存儲在內存中的值的大小、佈局、範圍以及要應用於它的操作集。 它是程序可以操作的存儲區域的名稱。 在本文中,我們將討論 C 語言中最重要的變量之一,即靜態變量。
C 語言中的 static 關鍵字使用頻率很高。 大多數程序員經常混淆的一件事是局部變量和全局變量如何影響靜態變量。 在每種情況下,靜態關鍵字在數據存儲位置和在整個程序中的行為方式方面都不同。 以下是靜態關鍵字的主要用途:
一世。 函數中的局部變量或靜態局部變量:可見性與自動局部變量相同。
ii. 模塊中的全局變量或靜態全局變量:在程序頂部聲明。
iii. 模塊中的函數或靜態函數:它存在於整個程序中。
iv. 成員變量或靜態成員變量:由類的所有實例訪問。

v.方法或靜態方法:由類的所有實例訪問。
我們將研究所有三個用例以及它們如何隨著變量的存儲區域而變化並提高代碼質量。
目錄
什麼是靜態變量?
在編程中,靜態變量是“靜態”分配的變量,這意味著它的生命週期貫穿整個程序運行。 它使用“靜態”關鍵字聲明,並在函數調用中保持其值。
句法:
靜態變量的語法是:
靜態數據類型變量名;
靜態變量聲明
聲明靜態變量時,會創建它的副本。 這些用於代替局部變量的主要目的是它們保留在它存在的範圍內分配的值。 程序員不需要在程序的新範圍內一次又一次地初始化變量。 它存在於整個程序中。
一般來說,靜態是適用於任何數據類型的存儲類說明符。 它指示編譯器將變量或函數限制在程序範圍內,並在程序的整個生命週期中持續存在。 此屬性允許封裝靜態變量或從程序的其餘部分隱藏變量,以防止任何意外訪問。 開發人員可以控制如何在模塊中訪問變量。 這是一個很好的編程習慣。
閱讀:前 130 多個 Java 面試問題和答案
程序中的靜態變量
· 在整個代碼的執行過程中,一個靜態變量保留在內存空間中。
·靜態變量的默認初始化值為零,即使它沒有被賦值,而在局部變量中則不然。
· 在 C 中必須使用static 關鍵字初始化靜態變量,否則將返回錯誤。
·靜態變量僅在第一次調用函數時初始化。
· 在靜態變量中,分配靜態變量的內存。
·在程序之外無法訪問全局靜態變量。
C中靜態變量的基本程序
#include <stdio.h>

主函數()
{
printf(“%d”,func());
printf(“\n%d”,func());
返回0;
}
整數函數()
{
靜止的 整數計數=0;
計數++;
返回計數;
}
在此代碼中,count 變量被聲明為靜態變量。 每次調用 func() 時,count 的值都會更新為 1。在下一次函數調用中,count 變量的值會變為 2。因此,靜態變量的值會在函數調用中保持不變。
輸出:
1
2
局部變量和靜態變量之間的區別
局部變量和靜態變量在程序中可以互換使用。 以下是兩者之間的一些主要區別:
| 區分點 | 局部變量 | 靜態變量 |
| 變量關鍵字聲明 | 1.由自動變量聲明,例如 int a = 1。 | 1.由靜態變量聲明,例如static int a = 1。 |
| 變量聲明 | 2.在函數內部聲明。 | 2.在函數內部或外部聲明。 |
| 變量創建 | 3.每次調用函數時都會創建它。 | 3.只為第一個函數調用創建,同一個變量用於進一步調用。 |
| 變量初始化 | 4.每次調用函數時都會初始化。 | 4.在一個程序中只初始化一次。 |
| 變量默認值 | 5.如果沒有初始化,則變量中存儲一個垃圾值。 | 5 、如果沒有初始化,默認值0存儲在static中。 |
| 可變終止 | 6.當函數結束時,它終止。 | 6.如果在函數內部聲明,則只能在該函數中訪問。 範圍僅限於該函數,其生命週期是直到程序終止。 如果在函數外部聲明,該變量將是全局的,並且可以被文件中的任何函數訪問。 範圍是文件,但生命週期是直到程序終止。 |
有了這張表,就很清楚為什麼靜態變量比局部變量更受歡迎。
包含局部變量和靜態變量的代碼
#include <stdio.h>
int main() {
自動int a = -15;
靜態int b = 5;
printf("自動變量 a 的值為 %d\n", a);
printf("靜態變量b 的值為 %d\n",b);
如果(一!= 0)
printf("靜態變量和自動變量之和為 %d\n",(b+a));
返回0;
}
程序輸出:
auto 變量的值為 -15

靜態變量的值為5
靜態變量和自動變量之和為 -10
另請閱讀: C 項目理念
概括
static 關鍵字廣泛用於它在 C 編程中提供的許多特性。 它的主要用途是限制函數或模塊中定義的變量的範圍。 開發人員可以體驗到安全性,因為變量和函數可以通過使用靜態變量對外部程序隱藏。 在許多現代面向對象語言中,靜態的使用被私有和公共所取代。
如果您有興趣了解更多信息並需要行業專家的指導,請查看 upGrad & IIIT Banglore 的全棧軟件開發PG 文憑。
