[問題] 一維陣列模擬二維

看板C_and_CPP (C/C++)作者 (honamida)時間15年前 (2010/11/25 22:12), 編輯推噓1(1014)
留言15則, 4人參與, 最新討論串1/1
我寫了一個function: void add(int N, float R[100][100], float M1[100][100], float M2[100][100]) { int i,j; for(i=0;i<N;i++) { for(j=0;j<N;j++) R[i][j]=M1[i][j]+M2[i][j]; } } 是用來做矩陣加法的 然後我想要把他用成指標 我試著用這樣 void add1(int N,float *R,float *M1, float *M2) { int i,j; float *p; for(i=0;i<N;i++) { for(j=0;j<N;j++) *p=*(M1+i*N+j)+*(M2+i*N+j); } } 在main裡呼叫時也從 add(q,R,M1,M2); 改成 add1(q,&(R[100][100]),&(M1[100][100]),&(M2[100][100])); 可是在用switch選擇方陣大小及運算方法及輸入方法時都ok 一run到 add1 就會當掉 add是沒問題 請問一下我的add1該怎麼修改呢 因為我也是用b板上的概念第一次自己試著寫寫看 諸多不懂麻煩指教@@ 謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.102.131

11/25 22:16, , 1F
float *p; *p = .... 這個 p 沒有指向有效空間
11/25 22:16, 1F

11/25 22:17, , 2F
置底文的十三誡第三
11/25 22:17, 2F

11/25 22:17, , 3F
好像是耶= = 那如果我要指向R呢??
11/25 22:17, 3F

11/25 22:18, , 4F
那應該是 *(R + i * N + j) = .... 之類的
11/25 22:18, 4F

11/25 22:18, , 5F
p是多餘的
11/25 22:18, 5F

11/25 22:20, , 6F
恩恩 這樣就不會當掉了 不過加出來結果都是0= =
11/25 22:20, 6F

11/25 22:21, , 7F
用 debugger 找找看問題吧
11/25 22:21, 7F

11/25 22:22, , 8F
謝謝你囉!
11/25 22:22, 8F

11/25 22:27, , 9F
&(R[100][100]) ?
11/25 22:27, 9F

11/25 22:50, , 10F
恩 對 這樣有哪裡不對嗎@@"
11/25 22:50, 10F

11/25 22:53, , 11F
你要取第一百行一百列的那個元素的位址?
11/25 22:53, 11F

11/25 22:56, , 12F
你應該是要取 R 這個陣列的起始位址
11/25 22:56, 12F

11/25 22:58, , 13F
我改成&(R[0][0])了 不過只有矩陣第一列會有正確答案@@
11/25 22:58, 13F

11/26 00:15, , 14F
add1為什麼又宣告了一個 *p? 應該直接把結果寫進R裡
11/26 00:15, 14F

11/26 00:15, , 15F
而且那個p沒有配置記憶體空間
11/26 00:15, 15F
文章代碼(AID): #1CxcxLaI (C_and_CPP)
文章代碼(AID): #1CxcxLaI (C_and_CPP)