我无法将二维浮点数组指定给指向浮点数的指针。我收到了警告
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语法。
答案 0 :(得分:2)
只需改变它:
float* face0[4] = {anchors[0], anchors[1], anchors[2], anchors[3]};