[爆卦]c二維陣列初始化0是什麼?優點缺點精華區懶人包

為什麼這篇c二維陣列初始化0鄉民發文收入到精華區:因為在c二維陣列初始化0這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者skyHuan (Huan)看板C_and_CPP標題[問題] 二維陣列初始化問題時間Tue A...


在寫程設矩陣乘法的題目的時候遇到一些問題

完整程式碼在這裡:https://pastebin.com/MxAUgHcY

這是執行結果:https://i.imgur.com/TWB7cYL.png

上面兩區塊是input,即一個2x3矩陣乘上一個3x4矩陣,最下面的區塊是相乘完的結果

中間兩個區塊是測試過程,也就是我的問題所在

以下列出我的問題,基本的程式觀念沒有很好,還請前輩們多多指教

1. 我的作法是先宣告出要存相乘結果的矩陣並初始化,如程式第18行
我記得二維陣列可以用 = {0} 來把全部的內容初始化為0
但做完第18行後,print出新宣告的陣列結果會是測試區塊的上面那塊
出現幾個很大的數字,感覺像是記憶體殘值(?
用for迴圈重新設定每個為0之後才恢復正常全部都是0
是我 = {0} 的使用上有什麼沒注意到的嗎

2. 宣告二維陣列大小的時候,大小是否可以用變數來表示
例如程式碼中的第7行中的m跟k1在scan後才能決定值
那第8行的二維陣列那樣宣告是合法的嗎,還是一定要用malloc的方式才行
我用自己電腦的IDE (CB)跟線上compiler (C99)跑都有過
但同學跑一模一樣的程式碼compiler不給過(VS)


--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.241.215.254
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1554208886.A.9FE.html
※ 編輯: skyHuan (114.137.5.141), 04/02/2019 20:58:19
TitanEric: {0}不是用在一維嗎 你要二維初始化只能用for loop跑{0}04/02 21:27
loveme00835: 根本沒有二維陣列這種東西 xD04/02 21:36
zamperla: 陣列初始化不能直接這樣用 除非一開始宣告才能直接寫 =04/02 22:03
zamperla: {0}04/02 22:03
skyHuan: 我是印象中好像有 看這個的語法範例(3)04/02 22:22
skyHuan: 也有就果斷寫下去了,所以是沒有嗎好的><04/02 22:22
剛剛把 = {0} 改成 = {} 初始就不會有問題了...
但查不太到為什麼,還是先乖乖用迴圈初始化好了><
skyHuan: 那問題(2) int matrix[m][n]; 其中m, n在04/02 22:29
skyHuan: runtime才能知道值,這個宣告法是可行的嗎04/02 22:29
skyHuan: 還是這種形式就一定要透過動態宣告04/02 22:29
skyHuan: 我試了有的compiler給過有的不給><04/02 22:29
zamperla: 比較嚴格的compiler不行 會叫你先設大小04/02 23:22
※ 編輯: skyHuan (36.229.130.164), 04/03/2019 00:15:25
tomsawyer: 例如codeblock可以 但vs不行 04/03 01:35
tomsawyer: 新出的constexpr就是拿來解決這個 04/03 01:36
skyHuan: 了解了,以後還是嚴謹一點多注意這些細節好了,感謝各位 04/03 02:07
skyHuan: 幫忙解答 04/03 02:07
adrianshum: 二樓:有!只是OP 不適用而已。 04/03 09:07
adrianshum: 再看原來是C... 我以為是C++ 04/03 09:10
adrianshum: 這我就不太確定了,抱歉亂入 XD 04/03 09:12
achicn3: memset(matrix,0,n*m*matrix[0][0]) 04/03 13:43
ericlee1027: 2要用動態宣告 04/03 22:31
sDwlr: {{0}}也可以 04/04 13:53
henrylin8086: 用{{0}}吧 04/28 23:56

你可能也想看看

搜尋相關網站