看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 我有三個 二維陣列分別是A B C 我想作 C=A+B 但是得用雙重指標 還有一個function叫 void ADD(int **a, int **b, int **c, int ** d) 好吧 ,我承認這是我的作業,但是我真的快想破頭了 請各位高手幫幫我 我猜是傳遞指標那邊錯了@@ 感謝大家 嗚嗚~~@QQ 希望得到的正確結果: C陣列的元素都是3 程式跑出來的錯誤結果: 52 D:\ftpshare\test.cpp cannot convert `int*' to `int**' for argument `1' to `int ADD(int**, int**, int**)' 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++, Windows 有問題的code: (請善用置底文標色功能) #include<iostream> using std::cout; using std::cin; using std::endl; const int m=5; const int n=5; int ADD(int **a, int **b, int **c) { for(int i=0;i <m; i++) { for(int j=0 ; j<n ; j++) { *(*(c+m)+n)= *(*(a+m)+n) + *(*(b+m)+n); } } } int main() { int A[5][5]={1},B[5][5]={0},C[5][5]={0},D[5][5]={0}; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { A[i][j]=1; } } for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { B[i][j]=2; } } cout<< *(*(A+0)+0); cout<< *(*(B+0)+0); *(*(C+0)+0)= *(*(A+0)+0) + *(*(B+0)+0); cout<< *(*(C+0)+0); ADD((int *)A,(int *)B,(int *)C); for(int i=0;i<5;i++) { for(int j=0;j<5;j++) {cout<<C[i][j]<<" "; } cout<<endl; } system("PAUSE"); return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.20.161.166
james732:置底文第十二戒? 10/02 23:51
james732:另外,程式排版是一種禮貌.... 10/02 23:52
stupid0319:ADD((int *)A,(int *)B,(int *)C); 參數跟宣告的不同 10/02 23:57
nana0130:謝謝大家,真是不好意思>"< 10/03 00:45
loveme00835:http://codepad.org/GiQUmnn4 看懂你也不用上課了 10/03 01:11
james732:我都不知道該說樓上人很好還是人很狠了...XDD 10/03 01:16
loveme00835:我再照原版的改改看 10/03 01:18
loveme00835:一定要傳指標 ? 10/03 01:27
loveme00835:http://codepad.org/URC2X1kc 收工 10/03 01:44
nana0130:謝謝大家,我剛剛有改出來了,就像love給的網頁說的那樣 10/03 01:50