2013-07-25 2 views
0

안녕 모두들 나는 함수의 반환 요소에 문제가있어. 포인터 "double **"에 이중 포인터를 리턴해야합니다. 하지만 이중 행렬이 있습니다.C++ 매트릭스에서 double ** 반환

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