2013-07-25 131 views
0

大家好,我遇到了函數返回元素的問題。我需要返回一個雙指針指向「雙**」。但是我得到了一個double [] []矩陣。C++從矩陣返回雙**

下面是代碼:

double** createPalette(int r, int g, int b) { 
double incR = 1/r, incG = 1/g, incB = 1/b; 
double Cp[r * g * b][3]; 

for (int i = 0; i < r; i++) { 
    for (int j = 0; j < g; j++) { 
     for (int k = 0; k < b; k++) { 
      Cp[i * r + j * g + k][0] = incR * i; 
      Cp[i * r + j * g + k][1] = incG * j; 
      Cp[i * r + j * g + k][2] = incB * k; 
     } 
    } 
} 

return Cp; //return &cp... (?) 

}

我一直在尋找互聯網上,但我只發現了大約簡單的指針,沒有指針pointers.What應該怎麼辦? 謝謝大家。

+2

不能你真的避免返回'雙**'?退還其他東西要少得多。 (你會[請不要偷酒店房間鑰匙](http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope/6445794#6445794)? )。 –

+0

這不能直接工作,因爲'double **'和'double [] []'具有不同的內存佈局。您將不得不手動分配所需的行。此外,返回一個指向堆棧分配變量的指針是在尋求麻煩! – Nbr44

+0

那麼,如果我首先用malloc分配矩陣,我可以返回指針嗎? – Bardo91

回答

2

我想你知道的r,g,b的價值,這樣你就可以得到矩陣的大小,你可以這樣做

void createPalette(int r, int g, int b, double matrix[][3]) 
+0

這是一個好主意,它的工作原理! – Bardo91