C++數組初始化的誤解

來源:互聯網
上載者:User

一直以為 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";

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.