關於靜態資料和動態資料的自我理解

2021-06-14 18:01:16 字數 1339 閱讀 1560

如果物件的生存期與程式的執行期相同,則稱它具有靜態生存期。

靜態變數的特點是,它並不會隨著每次函式的呼叫而產生乙個副體,也不會隨著函式返回而失效。in other words,當乙個函式返回後,下一次再呼叫時,該變數會保持上次運算後的值。

*****static int i=5;

表示i會被賦予5初始化,但是下次執行該函式時i值不一定為5,並不是每次運算前i的值都重新賦值為5。

若沒有給變數初始化

*****eg:static int j;

則預設j的初始值為0,即被0初始化。

在類的定義中僅僅對靜態資料成員進行引用性宣告,必須在命名空間作用域的某個地方使用類名限定定義性宣告,這時可以初始化。

之所以類的靜態資料成員需要在類定義之外再加定義是因為需要以這種方式專門為它們分配空間。非靜態資料成員無需以此方式定義,因為它們的空間是與它們所屬的物件的空間同時分配的。

eg: 

#include

using namespace std;

int i=1;       //i為全域性變數,具有靜態生存期(即

物件的生存期與程式的執行期相同)

自我分析:

1、程式都是從主函式開始執行的

第一次列印出main函式中的i,a,b,c

由於a沒給初始化,所以a的初值為0,且i為全域性變數值為1,在main中定義了b=-10,c=0;

所以第一次打出

&&&i=1 a=0 b=-10 c=0

然後c=c+8

2、然後執行other()

在改函式中靜態區域性變數a=2,b=0,c=10,

在other()中i=i+32(i為全域性變數1)所以i=33,且a=a+2,a=4,c=10+5=15

則第二次打出other()函式中i,a,b,c

&&&i=33,a=4,b=0,c=15

再執行b=a

3、再執行main函式

&&&i=33,a=0(保留第一次在main中的值0),b=-10,c=8

再執行i=i+10

4、執行other()

此時i=43

則當執行i=i+32後i=75

而此時的啊a=4(保留第一次執行other()後a的值不變)

執行a=a+2後a=6

而b也保留第一次執行other後的值b=a=4

c=10+5=15

則最後執行other()後列印出

&&&i=75,a=6,b=4,c=15

靜態資料和動態資料

一 靜態資料 1 概念 一些永久性的資料,一般儲存在硬碟中。硬碟的儲存空間一般都比較大,現在普通計算機的硬碟都有500g左右,因此硬碟中可以存放一些比較大的檔案。2 儲存時長 計算機關閉之後再開啟,這些資料依舊還在,只要你不主動刪除或者硬碟沒壞,這些資料永遠都在。3 哪些是靜態資料二 動態資料 1 ...

關於靜態庫和動態庫的鏈結

static1.cpp include void f static2.cpp include void f main.cpp include extern void f int main ar rs libstatic1.a static1.o ar rs libstatic2.a static2....

Linux 關於靜態庫和動態庫

為什麼要使用庫?如何使用庫 靜態庫與動態庫 查詢c標準靜態庫 find usr lib name libc.a查詢c標準動態庫 find usr lib name libc.so 如何給別人提供乙個靜態庫 首先要自己提供一套方法,然後打包。就以add函式和sub函式為例,說明如何給別人提供乙個靜態庫...