Re: [問題] 請問關於雙重指標傳送二維矩陣的問題
我遇到了和這個主題類似的問題,
我有一個別人寫好的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
10/29 05:09, 1F
→
10/29 05:22, , 2F
10/29 05:22, 2F
推
10/29 07:25, , 3F
10/29 07:25, 3F
→
10/29 12:54, , 4F
10/29 12:54, 4F
→
10/29 12:55, , 5F
10/29 12:55, 5F
※ 編輯: rai1209 來自: 142.136.124.34 (10/30 02:00)
→
10/30 02:02, , 6F
10/30 02:02, 6F
→
10/30 02:04, , 7F
10/30 02:04, 7F
※ 編輯: rai1209 來自: 142.136.124.34 (10/30 02:04)
→
10/30 02:08, , 8F
10/30 02:08, 8F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):