Re: [問題] 請問關於雙重指標傳送二維矩陣的問題

看板C_and_CPP作者 (亞維)時間10年前 (2013/10/29 05:01), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串2/2 (看更多)
我遇到了和這個主題類似的問題, 我有一個別人寫好的func結構大概就類似以下以double ** x當變數傳入 而我現在有一個 double[2][2]的矩陣mat, 按照爬文的結果矩陣和雙重指標間沒辦法簡單直接傳遞, 大家的建議是改func的變數寫法,但假設func已經寫得很複雜不想做更動, 那是否可以在主程式裡宣告 double **ptr_mat, 然後for loop把mat的地址一個一個丟進ptr_mat,再把ptr_mat餵給func? 那用什麼方法來寫**ptr_mat比較好? 目前我這樣試可以run,但run出來的結果不太正確... 請各位高手指教,謝謝 補充一下我現在的做法:(可以run但不確定有沒有問題) typedef double * PINT; double **a; a=new PINT[2]; for (int i=0; i <2 ; i++ ) { a[i]=new double[2]; } for ( int i =0; i < 2; i++) {for ( int j=0; j<2; j++) { a[i][j]=mat[i][j]; } } func(a); ※ 引述《cris122 (總是很多心事)》之銘言: : 開發平台(Platform): GCC, Linux : 問題(Question): : 請問若要傳送二維陣列 : 讓 C 可以正確識別 x[1][1] : 而函數是使用 float ** 來傳遞 : 請問該如何傳入呢? : 想請教程式碼問號處該怎麼設.... : 預期的正確結果(Expected Output): : 5 : 程式碼(Code):(請善用置底文網頁, 記得排版) : #include <stdio.h> : #include <stdlib.h> : void func(float ** x) { : x[1][1]++; : printf("%f \n", x[1][1]); : } : int main(void) { : float mat[2][2]; : mat[0][0] = 1.0; : mat[0][1] = 2.0; : mat[1][0] = 3.0; : mat[1][1] = 4.0; : func(??); : return EXIT_SUCCESS; : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 142.136.124.34

10/29 05:09, , 1F
3你有用到Malloc?
10/29 05:09, 1F

10/29 05:22, , 2F
其他部分會,但這裡想傳入的就只是普通的二D矩陣而已
10/29 05:22, 2F

10/29 07:25, , 3F
Function要改的地方也只有引數的宣告不是嗎
10/29 07:25, 3F

10/29 12:54, , 4F
我意思是說你硬要用 double **ptr 的話, 那裡會用到 malloc
10/29 12:54, 4F

10/29 12:55, , 5F
你需要配置一個類似 double *x[2] 的東西才能拿去存位址
10/29 12:55, 5F
※ 編輯: rai1209 來自: 142.136.124.34 (10/30 02:00)

10/30 02:02, , 6F
Func有點複雜,光改引數宣告沒辦法work
10/30 02:02, 6F

10/30 02:04, , 7F
我補充了一下我的做法,可以run,但還不確定結果正不正確...
10/30 02:04, 7F
※ 編輯: rai1209 來自: 142.136.124.34 (10/30 02:04)

10/30 02:08, , 8F
我大概知道F大的意思,但不確定寫法正不正確,謝謝
10/30 02:08, 8F
文章代碼(AID): #1IRj2nK7 (C_and_CPP)
文章代碼(AID): #1IRj2nK7 (C_and_CPP)