繁体   English   中英

C-如何将变量2d数组作为参数传递

[英]C - how to pass a variable 2d array as parameter

我想将2D数组作为参数传递。 问题是二维数组的大小总是变化的。 所以我不能写像myfunction(int a [2] [5]);之类的东西。

我有一个包含很多3D坐标的头文件。 例如:

float someArray[][3] = {{0.0,1.0,-2.0},{-1.0,1.0,-2.0},{-1.0,1.0,0.0},{0.0,1.0,0.0},
            {-1.0,0.75,-2.0},{-1.0,1.0,-2.0},{-1.0,1.0,0.0},{-1.0,0.75,0.0},
            {0.0,0.75,-2.0},{0.0,1.0,-2.0},{0.0,1.0,0.0},{0.0,0.75,0.0}, 
            {0.0,0.75,-2.0},{-1.0,0.75,-2.0},{-1.0,0.75,0.0},{0.0,0.75,0.0},
            {0.0,0.75,-2.0},{-1.0,0.75,-2.0},{-1.0,1.0,-2.0},{0.0,1.0,-2.0},
            }; 


void drawVertex(const float **vertex, int numberVertex, int shape)
{
    int i;

    glPushMatrix();
    switch(shape)
    {
        case 0: glBegin(GL_LINES); break;
        case 1: glBegin(GL_POLYGON); break;
        default: break;
    }

    for(i=0;i<numberVertex;i++)
    {
        glVertex3fv(vertex[i]);
    }
    glEnd();
    glPopMatrix();

}

我尝试过的函数调用:

这些只是崩溃(核心转储)

drawVertex(someArray, 6,1);
drawVertex(*someArray, 6,1);

我应该修改drawVertex()函数的参数吗? 我尝试了很多事情,但似乎没有任何效果。

如果需要数组,则必须使用数组。 指针到指针与数组无关。 将该功能更改为:

void drawVertex(const GLfloat vertex[][3], int numberVertex, int shape)

或更好:

void drawVertex(int numberVertex, const GLfloat vertex[numberVertex][3] int shape)

看起来这里的输入是指向const float **vertex指针的指针,我不太了解。 您可以定义为void drawVertex(const float vertex[][3], int numberVertex, int shape)吗? 另外,您似乎正在尝试输入一个常量数组; 但是,输入someArray[][3]未定义为常量数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM