[問題] 動態二維陣列宣告

看板C_and_CPP (C/C++)作者 (JimmyG)時間16年前 (2009/12/08 21:50), 編輯推噓2(2017)
留言19則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 目前在網路上和爬文所得到的動態二維陣列宣告方法為 double **matrixOne matrixOne = ( double** )malloc( rowOne_int * sizeof( void * ) ); for ( i = 0 ; i < rowOne_int ; i++ ) { matrixOne = ( double* )malloc( columnOne_int * sizeof( double * ) ); } // end for 應該會得到一個 matrixOne[rowOne_int][columnOne_int] 的二維陣列 程式跑出來的錯誤結果: 但是發生了 Compile error '=' : 無法由 'double *' 轉換為 'double **' 的問題 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Visual Studio 2008 補充說明: 不知道是不是在 VS2008 裡面寫法有改變 以上問題感謝回答的各位了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.225.223

12/08 21:57, , 1F
matrixOne[i] = ( double* )malloc( columnOne_int * sizeo
12/08 21:57, 1F

12/08 21:58, , 2F
columnOne_int * sizeof( double )
12/08 21:58, 2F

12/08 22:04, , 3F
請問是 sizeof(double) 還是 sizeof(double*)sk7
12/08 22:04, 3F

12/08 22:06, , 4F
for裡面那個是sizeof(double), 因為你這次是要這麼多個
12/08 22:06, 4F

12/08 22:06, , 5F
double來用, 而不是double*; 要錯的話, 32位元環境
12/08 22:06, 5F

12/08 22:07, , 6F
double 8 byte, double* 4 byte, array八成會用爆@_@"
12/08 22:07, 6F

12/08 23:01, , 7F
double* 4byte 比較容易爆掉?
12/08 23:01, 7F

12/08 23:11, , 8F
double是8 byte, double*只有4 byte, 應該要
12/08 23:11, 8F

12/08 23:11, , 9F
columnOne_int * 8的你只要到columnOne_int * 4 bytes
12/08 23:11, 9F

12/08 23:12, , 10F
的memory, 不是等著用爆嗎??
12/08 23:12, 10F

12/08 23:13, , 11F
先別管它, malloc你要配怎樣型態的空間就寫sizeof(TYPE)
12/08 23:13, 11F

12/08 23:14, , 12F
TYPE不match運氣好沒事, 運氣不好就等著用爆了....XD
12/08 23:14, 12F

12/08 23:19, , 13F
瞭解你的意思了.那為啥網路上的教學都會說迴圈裡面的
12/08 23:19, 13F

12/08 23:19, , 14F
是要給 type * 呢? 感謝你
12/08 23:19, 14F

12/08 23:52, , 15F
for外面那個是sizeof(double*)沒錯, 因為你需要一個
12/08 23:52, 15F

12/08 23:53, , 16F
double*的陣列; for迴圈裡面則是對matrixOne[i]去配置
12/08 23:53, 16F

12/08 23:54, , 17F
double陣列; 建議您把教學裡的東西再看仔細, 不然就貼
12/08 23:54, 17F

12/08 23:54, , 18F
出你看到的教學吧....@_@"
12/08 23:54, 18F

12/09 00:15, , 19F
我思考看看,謝謝你了
12/09 00:15, 19F
文章代碼(AID): #1B7bcgeL (C_and_CPP)
文章代碼(AID): #1B7bcgeL (C_and_CPP)