C++數組初始化正確理解

一直以爲 int a[256]={0};是把a的所有元素初始化爲0,int a[256]={1};是把a所有的元素初始化爲1. 調試的時查看內存發現不是那麼一回事,翻了一下《The C++ Programming Language》總算有定論。PDF的竟然不然複製,就把它這章翻譯了,如下 5.2.1 數組初始化 數組可以用一個列值來初始化,例如 int v1[] ={1,2,3,4}; char v2[]={'a','b','c',0}; 當數組定義時沒有指定大小,當初始化採用列表初始化了,那麼數組的大小由初始化時列表元素個數決定。所以v1和v2分別爲 int[4] 和char[4]類型。如果明確指定了數組大小,當在初始化時指定的元素個數超過這個大小就會產生錯誤。例如: char v3[2] ={'a','b',0}; //錯誤:太多的初始化值了 char v3[3] ={'a','b',0}; //正確 如果初始化時指定的的元素個數比數組大小少,剩下的元素都回被初始化爲 0。例如 int v5[8]={1,2,3,4}; 等價於 int v5[8]={1,2,3,4,0,0,0,0}; 注意沒有如下形式的數組賦值: void f() { v4={'c','d',0}; //錯誤:不是數組賦值 } 如果你想這樣的複製的話,請使用 vector(16章第三節) 或者 valarray(22章第四節)。 字符數組可以方便地採用字符串直接初始化(參考第五章 2.2小節) 譯註: 就是 這樣啦 char alpha []="abcdefghijklmn";

發佈了38 篇原創文章 · 獲贊 6 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章