如何从函数C ++返回2D数组

时间:2018-12-31 15:46:16

标签: c++ arrays function

C ++的新手 使用数组作为参数从函数返回数组。 我正在使用openGL,并使用2D数组构建颜色表。 我想调用一个从现有2d数组返回2d数组的函数。 这段代码可以编译,但是我想要void buildArray(float color [4] [3])返回一个数组float color256 [256] [3] = {}; 我知道我可能有数组初始化错误。 换一种说法。我知道有多种初始化数组(指针)的方法 我明显地编写了比C ++更多的C语言。

#include <stdio.h>
#include <iostream> 
using namespace std; 

void buildArray(float color[4][3]){
    float color256[256][3] = {};
    int n;
    float sr,sg,sb,er,eg,eb,ir,ig,ib;
    sr = color[0][0];sg = color[0][1];sb = color[0][2];
    er = color[1][0];eg = color[1][1];eb = color[1][2];
    ir = (er-sr)/8;ig = (eg-sg)/8; ib = (eb-sb)/8;
    cout<<"increments "<<ir<<" "<<ig<<" "<<ib<<endl;
    color256[0][0] = color [0][0];
    color256[0][1] = color[0][1];
    color256[0][2] = color[0][2];
    cout<<"start "<<color256[0][0]<<" "<<color256[0][1]<<" "<<color256[0][2]<<endl;
    for (n = 0; n < 8; n ++){
      color256[n+1][0] = color256[n][0] + ir;
      color256[n+1][1] = color256[n][1] + ig;
      color256[n+1][2] = color256[n][2] + ib;
      cout << color256[n][0]<<" "<<color256[n][1]<<" "<<color256[n][2]<<endl;
    }
    for (n =0;n < 8 ; n++){
      cout << color256[n][0]<<" "<<color256[n][1]<<" "<<color256[n][2]<<endl;
    }

}

void arrayStart(){
  float color[4][3]= {
  {  0.0 , 0.1686 , 0.2117 },
  {   0.0274 , 0.2117 , 0.2588},
  {   0.3450 , 0.4313 , 0.4588},
  {   0.3960 , 0.4823, 0.5137}
};
//  float c256 = color buildArray(color);
  buildArray(color);
//  for (int i =0 ;i < 8 ; i++)
//    cout << c256[i][0];
}

int main(int argc, char **argv)
{
    arrayStart();
    return 0;
}

0 个答案:

没有答案