C - 下标值既不是数组也不是指针,也不是向量

时间:2016-04-10 10:24:53

标签: c arrays

我声明了一个数组并将2D数组作为参数传递。但是我一直得到同样的错误:下标值既不是数组也不是指针也不是向量。 对于这一行:vertex [i] [j-1] = shape [i] [j];

我该如何解决?

头文件:

GLfloat mijnplayer [][4] ={
{0,-0.091057,0.198079,0.084590},
{0,-0.158043,0.158043,0.071039},
{0,-0.071039,0.158043,0.158043}};

函数调用:

int main(void)
{   

drawVertex(mijnplayer,3,1);

}

void drawVertex(GLfloat shape[][4], int numberVertex, int shape)
{
    int i,j;
    GLfloat vertex[][3]={0};


    //convert 4element array to 3 element array
    for(i=0;i<numberVertex;i++)
    {
        for(j=1;j<4;j++)
        {
            vertex[i][j-1] = shape[i][j];
        }

    }

    for(i=0;i<numberVertex;i++)
    {

        glVertex3fv(vertex[i]);
    }

}

编辑:

完整的编译器输出:

cc -c -o mijnTest.o mijnTest.c

mijnTest.c:23:59:错误:'shape'的冲突类型

void drawVertex(GLfloat shape [] [4],int numberVertex,int shape)                                                            ^

mijnTest.c:23:25:注意:'形状'的先前定义在这里

void drawVertex(GLfloat shape [] [4],int numberVertex,int shape)                          ^

mijnTest.c:在函数'drawVertex'中:

mijnTest.c:43:26:错误:下标值既不是数组也不是指针也不是 向量

vertex [i] [j-1] = shape [i] [j];                           ^

mijnTest.c:在函数'drawScene'中:

mijnTest.c:69:2:警告:传递'drawVertex'的参数1 不兼容的指针类型[默认启用]

drawVertex(阿森,6,0);   ^

mijnTest.c:23:6:注意:预期'GLfloat()[4]'但参数类型 'GLfloat()[3]'

void drawVertex(GLfloat shape [] [4],int numberVertex,int shape)       ^

make:*** [mijnTest.o]错误1

1 个答案:

答案 0 :(得分:1)

因为shape是数据类型int的变量,它既不是数组也不是指针,也不是矢量。

要么您的数据类型错误,要么您只是使用了错误的变量。