无法将2D浮点数组指定给指向浮点数的指针

时间:2017-06-24 18:58:21

标签: c arrays pointers geometry

我无法将二维浮点数组指定给指向浮点数的指针。我收到了警告

chart.Dump()

有问题的分配位于第一个代码示例的底部。 我已根据我在SO上阅读的内容改变了我的语法,但我的问题仍然存在。我正在尝试存储数据以表示框的顶点和面,所以我malloc一个浮动**来保存所有顶点,这是有效的,然后我malloc一个浮点***来保持一个面部列表,其中每个面由顶点列表定义。最后,我创建了一个中间变量face0,我想存储一个面的顶点列表,然后将其分配给face [0],就像我对锚点一样。这项任务不起作用。

有问题的分配位于第一个代码示例的底部。

warning: initialization from incompatible pointer type

根据我在这里读到的内容,我也尝试用以下内容替换最后一行,并出现以下错误。

// I first create my list of vertices
// This part works
float **anchors;
int numAnchors = 8;

anchors = (float**)malloc(numAnchors*sizeof(float*));

// anchor0 etc are float arrays of length 3
anchors[0] = anchor0;
anchors[1] = anchor1;
anchors[2] = anchor2;
anchors[3] = anchor3;
anchors[4] = anchor4;
anchors[5] = anchor5;
anchors[6] = anchor6;
anchors[7] = anchor7;

// Now I want to create a list of box faces where
// each face is defined by four vertices.
float ***faces;
int numFaces = 6;

faces = (float***)malloc(numFaces*sizeof(float**));

float **face0 = {anchors[0], anchors[1], anchors[2], anchors[3]};
// warning: initialization from incompatible pointer type [enabled by default]

float face0[][] = {anchors[0], anchors[1], anchors[2], anchors[3]};
// error: array type has incomplete element type

float face0[][3] = {anchors[0], anchors[1], anchors[2], anchors[3]};
// error: incompatible types when initializing type ‘float’ using type ‘float *’

我还阅读了以下内容,主张完全不同的作业方法:

conversion of 2D array to pointer-to-pointer

但我甚至无法让玩具示例按预期工作。

修改

此项目只能使用C语法。

1 个答案:

答案 0 :(得分:2)

只需改变它:

 float* face0[4] = {anchors[0], anchors[1], anchors[2], anchors[3]};