陣列部分初始化

2021-08-25 09:55:10 字數 610 閱讀 2532

一直以為陣列初始化應該用memset():

char a[128];

memset(a, 0, sizeof(a));

以為部分初始化僅僅是初始化陣列頭部元素:

char a[128] = ;

今有同事糾正,「= 」表示全部置0.

經試驗,果然可以這樣全部置0.

反彙編碼中可以看到memset()的呼叫。

如果沒有任何初始化,內容是未初始化的。

只要有部分初始化,陣列的剩餘部分會自動初始化為0.

規則詳見:

when an automatic array or structure has a partial initializer,

the remainder is initialized to 0, just as for statics.

其中的腳注中又說,k&r2的早期版本中,對部分初始化的說明是錯誤的。

early printings of k&r2 incorrectly stated that partially-initialized

automatic aggregates were filled out with garbage.

(金慶的專欄)

陣列部分初始化

一直以為陣列初始化應該用memset char a 128 memset a,0,sizeof a 以為部分初始化僅僅是初始化陣列頭部元素 char a 128 今有同事糾正,表示全部置0.經試驗,果然可以這樣全部置0.反彙編碼中可以看到memset 的呼叫。如果沒有任何初始化,內容是未初始化的。只...

陣列初始化

cpp中陣列初始化方法 簡單的初始化 利用定義變數時賦初值進行初始化。int a 10 float f 10 char ch 5 大括號中的為初始值。較為複雜的初始化 利用memset函式初始化。memset函式用法 void memset void s,int c,size t n 將已開闢記憶體...

陣列初始化

flydream flydream c cat x.cpp include using namespace std int main int argc,char argv flydream flydream c flydream flydream c g g wall x.cpp x.cpp in ...