[問題] 二維陣列初始化問題

作者: skyHuan (Huan)   2019-04-02 20:41:21
在寫程設矩陣乘法的題目的時候遇到一些問題
完整程式碼在這裡: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)
作者: TitanEric (泰坦)   2019-04-02 21:27:00
{0}不是用在一維嗎 你要二維初始化只能用for loop跑{0}
作者: loveme00835 (髮箍)   2019-04-02 21:36:00
根本沒有二維陣列這種東西 xD
作者: zamperla (地鼠王)   2019-04-02 22:03:00
陣列初始化不能直接這樣用 除非一開始宣告才能直接寫 ={0}
作者: skyHuan (Huan)   2019-04-02 22:22:00
我是印象中好像有 看這個的語法範例(3)也有就果斷寫下去了,所以是沒有嗎好的><http://rs2.ocu.edu.tw/~jengchi/2Darray_usage.htm那問題(2) int matrix[m][n]; 其中m, n在runtime才能知道值,這個宣告法是可行的嗎還是這種形式就一定要透過動態宣告我試了有的compiler給過有的不給><
作者: zamperla (地鼠王)   2019-04-02 23:22:00
比較嚴格的compiler不行 會叫你先設大小
作者: tomsawyer (安安)   2019-04-03 01:35:00
例如codeblock可以 但vs不行新出的constexpr就是拿來解決這個
作者: skyHuan (Huan)   2019-04-03 02:07:00
了解了,以後還是嚴謹一點多注意這些細節好了,感謝各位幫忙解答
作者: adrianshum (Alien)   2019-04-03 09:07:00
二樓:有!只是OP 不適用而已。再看原來是C... 我以為是C++這我就不太確定了,抱歉亂入 XD
作者: achicn3 (Sher)   2019-04-03 13:43:00
memset(matrix,0,n*m*matrix[0][0])
作者: ericlee1027 (小志)   2019-04-03 22:31:00
2要用動態宣告
作者: sDwlr (0.0)   2019-04-04 13:53:00
{{0}}也可以
作者: henrylin8086 (小木)   2019-04-28 23:56:00
用{{0}}吧

Links booklink

Contact Us: admin [ a t ] ucptt.com