關於C語言裡的初始化問題為什麼要初始化

2022-09-18 23:10:28 字數 675 閱讀 2761

1樓:東方今典看風景

「區域性變數初始化」是指在使用這個區域性變數前,要對其進行初始化。這是因為區域性變數是從記憶體堆中分配的,用完就還給記憶體堆,所以被分配的區域性變數並不一定是0,而很可能是其他地方用過的一個值,因此在使用這個變數之前,要對它進行顯示初始化。

2樓:愚禮進君

c的區域性變數一般是在棧上進行分配的。

棧使用的是ram,掉電內容丟失,上電內容隨機。

這裡的隨機,一般指其不能確定其內容一定是什麼,而不是說其內容完全沒有規律,與數學上的隨機數沒有什麼關係。

舉個例子,一個位元組的ram,8位有256種可能。數學上講隨機數,那麼這個位元組上電後應該是256種可能性中某一個。但計算機上不是這樣,其上電後的內容一般來說就是0,但你不能保證它一定就是零,有很小的可能它的內容不是0,那麼是多少呢?

不知道!在程式處理上,你就要認為它的內容是隨機的。

回到你的問題,你沒有初始化,得到了一個確定的執行結果,為什麼?兩個可能,這個結果內容就是隨機的,只不過結果恰好是這個值而已,但你不能保證下次執行結果,那麼你就需要把它當隨機值對待。另一個可能,你在不經意間執行了初始化,因為c編譯器本身會連結一些初始化程式,這個牽涉到另一個話題,系統是怎麼樣進行初始化的。

結論,變數應該明確的進行初始化。如果系統不能確定你的變數初值是一個確定的值,那麼就需要你自己來做初始化。

C語言結構體陣列的初始化,C語言結構陣列初始化的問題

定義成struct list 試試呢?struct list creat char name,int priority,int time 同學,你注意到了create 函式裡面,你又定義了一句 list pr 了麼?這句話時關鍵,首先,你在main 函式 我猜應該是main吧 中寫道 list pr...

有關於C 多維陣列的初始化,C 的二維陣列初始化

c 是在c語言的基礎上開發的一種物件導向程式語言,應用廣泛。c 支援多種程式設計正規化 物件導向程式設計 泛型程式設計和過程化程式設計。最新正式標準c 於2014年8月18日公佈。其程式設計領域眾廣,常用於系統開發,引擎開發等應用領域,是至今為止最受廣大程式設計師受用的最強大程式語言之一,支援類 類...

關於c語言指標問題,為什麼會出現這樣的現象

這裡採用的是地址傳值,會改變相應記憶體的值。值傳遞好比是你把檔案複製一份,通過網路傳給他,然後他可以在他本機上對檔案做任何的修改,修改會儲存下來,但是你機器上的檔案不會發生任何的變化。即形參與實參是兩個不同的變數,各自佔用不同的儲存單元。地址傳遞好比是你把檔案在網路上的地址告訴他人,他人通過網路訪問...