Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;从矩阵返回双**_C++_C_Pointers_Matrix - Fatal编程技术网

C++ C++;从矩阵返回双**

C++ C++;从矩阵返回双**,c++,c,pointers,matrix,C++,C,Pointers,Matrix,大家好,我遇到了函数返回元素的问题。我需要返回指向指针“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++) {

大家好,我遇到了函数返回元素的问题。我需要返回指向指针“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... (?)
double**createPalette(int r、int g、int b){
双增量=1/r,增量=1/g,增量=1/b;
双Cp[r*g*b][3];
对于(int i=0;i
}

我在互联网上寻找,但我只找到了简单的指针,没有指向指针的指针。我该怎么办?
谢谢大家。

我想你知道r,g,b的值,所以你可以得到矩阵的大小,你可以这样做

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

你真的不能避免返回双**
?归还其他东西的痛苦要小得多。(那你愿意吗?)这不能直接工作,因为
double**
double[][]
有不同的内存布局。您必须手动分配所需的行。此外,返回一个指向堆栈分配变量的指针是自找麻烦的!那么,如果首先使用malloc分配矩阵,我可以返回指针吗?为什么不返回一个
std::vector
?(<代码>双CP [R*G*B](3)< /C>不是标准C++,它是GCC扩展可变长度数组。返回时会很难。)无关的:“整数”除法除法:<代码> IcR< /C> >代码>凯西!我没有意识到整数除法!