首頁 > 後端開發 > C++ > 主體

靜態變數在C/C++中儲存在哪裡?

王林
發布: 2023-09-15 21:09:03
轉載
1258 人瀏覽過

靜態變數在C/C++中儲存在哪裡?

靜態變數是程式運行時保留在記憶體中的變量,即它們的生命週期是整個程式運行的時間。這與自動變數不同,它們僅在函數運行時保留在記憶體中,並在函數結束時被銷毀。

靜態變數儲存在記憶體的資料段中。資料段是程式虛擬位址空間的一部分。

所有沒有明確初始化或初始化為零的靜態變數都儲存在未初始化資料段(也稱為未初始化資料段)中。 BSS 段)。與此相比,初始化的靜態變數儲存在初始化的資料段中。

範例如下-

static int x = 5;
static int y;

The static variable x is stored in the initialized data segment and the static variable y is stored in the BSS segment.
登入後複製

示範C 語言靜態變數的程式如下-

範例

 現場示範

#include<stdio.h>
int func(){
   static int i = 4 ;
   i++;
   return i;
}

int main(){
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());

   return 0;
}
登入後複製

上述程式的輸出如下-

5
6
7
8
9
10
登入後複製

現在讓我們理解上面的程式。

在函數func()中,i是靜態變量,被初始化為4。因此它儲存在初始化資料段中。然後 i 遞增並傳回其值。顯示這一點的程式碼片段如下 -

int func(){
   static int i = 4 ;
   i++;
   return i;
}
登入後複製

在函數main()中,函數func()被呼叫6次,它會傳回列印的i的值。由於 i 是靜態變量,因此在程式運行時它會保留在記憶體中並提供一致的值。顯示這一點的程式碼片段如下 -

printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
登入後複製

以上是靜態變數在C/C++中儲存在哪裡?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!