C 靜態變數問題

2021-06-01 23:12:45 字數 884 閱讀 4858

今天實現乙個函式的時候第一思路就是靜態變數

eg:

templateint puttreeinarray(gtnode*t1, elem a)

而這個函式的目的是將乙個普通樹的結點值放入陣列中,並返回結點數,而我將在下面乙個函式呼叫這個函式兩次。

eg:

templatebool isequaltree(gtnode*t1, gtnode*t2)

return true;

}

結果在測試的時候發現結果錯誤,於是乎就開始除錯分析。

經除錯發現呼叫兩次puttreeinarray函式時,裡面的static i變數 不會重置還是會在第乙個基礎上遞增。

於是乎我打算再構造乙個函式,eg:

templateint puttreeinarray(gtnode*t1, elem a)

發現還是結果錯誤,經過分析發現:除了第一次重置時將靜態變數重置為0之外,運用j並不能改變靜態值,估計是因為靜態變數用同一塊記憶體位址,實質上還是同乙個靜態變數。還是從i開始遞增。所以便在網路上尋找可以重置或者刪除靜態變數的方法,一番尋找後無果,希望如果有人看到這篇文章,又恰好知道如果重置或刪除請告訴我。所以打算拋棄靜態變數用另外方法就是修改引數,加上乙個整形變數。

templateint puttreeinarray(gtnode*t1, elem a,int i)

templatebool isequaltree(gtnode*t1, gtnode*t2)

return true;

}

結果結果雖然獲得了,但是靜態變數這個問題還是無法解決。請指教!

C 靜態變數

在c 程式中,沒有全域性變數的概念,這意味著所有的成員變數只有該類的實 例才能操作這些資料,這起到了 資訊隱藏 的作用。但有些時候,這樣做卻不是個明智的選擇。假設我們要定義乙個圖書類,要求該類能儲存圖書的數量,即每增加一本圖書 定義乙個例項 圖書的數量應該加1。如果沒有靜態變數,我們需要將圖書的數量...

C 靜態變數

在c 程式中,沒有全域性變數的概念,這意味著所有的成員變數只有該類的例項才能操作這些資料,這起到了 資訊隱藏 的作用。但有些時候,這樣做卻不是個明智的選擇。假設我們要定義乙個圖書類,要求該類能儲存圖書的數量,即每增加一本圖書 定義乙個例項 圖書的數量應該加1。如果沒有靜態變數,我們需要將圖書的數量儲...

C 靜態變數

靜態變數 型別說明符是static。靜態變數屬於靜態儲存方式,其儲存空間為記憶體中的靜態資料區 在靜態儲存區內分配儲存單元 該區域中的資料在整個程式的執行期間一直占用這些儲存空間 在程式整個執行期間都不釋放 也可以認為是其記憶體位址不變,直到整個程式執行結束 相反,而auto自動變數,即動態區域性變...