一直以為陣列初始化應該用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 ...