gpt4 book ai didi

c++ - 这个数组声明有什么问题?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:03 25 4
gpt4 key购买 nike

我在一个函数内创建了这个数组,变量 MODEL_VERTEX_NUM 在运行时初始化,我猜这就是症结所在。

loat model_vertices [][]= new float [MODEL_VERTEX_NUM][3];

我遇到了以下错误:

1>.\GLUI_TEMPLATE.cpp(119) : error C2087: 'model_vertices' : missing subscript
1>.\GLUI_TEMPLATE.cpp(119) : error C2440: 'initializing' : cannot convert from 'float (*)[3]' to 'float [][1]'

我意识到当我这样做时:

float model_vertices *[]= new float [MODEL_VERTEX_NUM][3];

编译器让这个通过,但我想了解之前的声明有什么问题。

那么,[][] 声明有什么问题?

最佳答案

对于二维数组a[X][Y],编译器需要知道Y来生成访问数组的代码,所以你需要改变你的代码为

float (*model_vertices) [3] = new float [2][3];

如果你有一个 T a[X][Y] 类型的数组并且想要访问 a[x][y]这相当于访问 *(((T*)(&a[0][0])) + x*Y + y)。如您所见,编译器需要知道 Y 而不是 X 才能生成访问数组的代码。

关于c++ - 这个数组声明有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8129205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com