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

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

請問C++中二維數組的問題

請問C++中二維數組的問題

C C++
莫回無 2018-07-22 19:12:05
C++中 二維數組如何初始化為空的?這樣可以嗎?int temp[][3]={};求教 謝謝!
查看完整描述

2 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

C++沒有“空數組”這一說,事實上你也不需要真正為空的數組。數組就是用來讀寫的,空著有什么用?如果你不想看到數組中的某些元素,不讀它就行了。聲明一個數組,系統就在棧上為你分配一塊相應大小的空間。如果數組初始化了,比如說這樣

    int temp[][3] = {0};

那么這塊空間里都被寫入了0。但是,這種聲明方式缺少了第一維,所以給人造成困惑:這塊空間到底是多大呢?一般來說,應該是3*sizeof(int),也就是說,這個數組里面被填充了3個0。如果這樣初始化:

    int temp[][3] = {0, 1, 2};

數組的大小還是3*sizeof(int)。但是,如果這樣初始化呢:

    int temp[][3] = {0, 1, 2, 3};

這塊數組的大小就是6*sizeof(int)。原因是:原本聲明了3列,但是初始化的時候有4個int,于是系統自動又為數組添了一行。同理,如果這樣初始化:

    int temp[][3] = {0, 1, 2, 3, 4, 5};

那么數組大小還是6*sizeof(int),而這樣初始化:

    int temp[][3] = {0, 1, 2, 3, 4, 5, 6};

這時,數組大小就是9*sizeof(int)了。
但是,如果你不對數組進行初始化,比如說這樣:

    int temp[][3];

一般是編譯不過的。原因很簡單,如果同時給出了第一維m和第二維n,那么數組空間就按照m*n個int來分配;如果只給出第二維n,那么系統需要綜合考慮n和你實際初始化的數據為數組分配空間;如果你連初始化也沒做,系統直接傻眼,不知道該分配多少空間了,所以編譯報錯。


查看完整回答
反對 回復 2018-07-24
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

int temp[這里必須要有一個數字][3]={0};


查看完整回答
反對 回復 2018-07-24
  • 2 回答
  • 0 關注
  • 1013 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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