亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C中int數組的初始值

C中int數組的初始值

C
手掌心 2019-12-15 16:12:36
像這樣在C中聲明數組時:int array[10];整數的初始值是多少?我在使用不同的編譯器時會得到不同的結果,我想知道它是否與編譯器或OS有關。
查看完整描述

3 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

按照標準設置,所有全局和函數靜態變量都會自動初始化為0。自動變量不會初始化。


int a[10];  // global - all elements are initialised to 0


void foo(void) {

    int b[10];    // automatic storage - contain junk

    static int c[10]; // static - initialised to 0

}

但是,最好始終手動初始化函數變量,而不管其存儲類如何。要將所有數組元素設置為0,您只需要將第一個數組項分配為0-省略的元素將自動設置為0:


int b[10] = {0};



查看完整回答
反對 回復 2019-12-16
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

為什么auto在其他所有內容都未初始化時,函數局部變量(存儲類)未初始化?

C與硬件接近;這是它最大的優勢,也是最大的危險。究其原因auto存儲類對象具有隨機初始值,是因為他們在棧上分配,和設計決定不自動清除這些(部分原因是因為他們需要對每個函數調用將被清除)。

另一方面,非auto對象僅需清除一次。另外,出于安全原因,操作系統必須清除分配的頁面。因此,這里的設計決定是指定零初始化。為什么安全性也不是堆棧的問題?實際上,一開始它已清除。您看到的垃圾來自您自己程序的調用框架的早期實例以及它們所調用的庫代碼。

最終結果是快速的內存有效代碼。裝配的所有優勢無所不包。在dmr發明C之前,“ Basic”和整個OS內核之類的“ HLL”實際上確實是作為大型匯編程序實現的。(在某些地方,例如IBM除外)。



查看完整回答
反對 回復 2019-12-16
  • 3 回答
  • 0 關注
  • 610 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號