C++ C++;从矩阵返回双**
大家好,我遇到了函数返回元素的问题。我需要返回指向指针“double**”的双指针。但我得到了一个双重矩阵 代码如下: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** 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> >代码>凯西!我没有意识到整数除法!