我遇到一个情况,我想要一个指针数组(M行,N列),该数组的每个成员都指向一个浮点 vector (L-长度)。你能告诉我如何建立它吗?我希望我可以动态地建立它,因为我通常一开始不知道M、N和L,并且L对于差异 vector 可能是不同的。
我的情况是我需要读取不同距离(NDIS)和深度(NDP)的格林函数。所以我需要创建类似 *grn[NDP][NDIS] 的东西。然后使用该数组的每个指针指向绿色函数的一个分量。
顺便说一句,我认为这比设置一个已知大小的指针数组有点复杂。您认为值得使用这种类型的数据结构吗?我正在尝试编写一个程序来处理观察,但我通常不知道它的大小。 但是,我可以使用固定大小的指针数组。如果总数据大于给定的大小,我可以忽略过大的部分。但我希望能全部使用它们。
最佳答案
您需要使用二维数组并需要动态分配它,如下所示:
int i, j;
float **arr;
arr = malloc(sizeof(float*) * Size1); //1st array setup
for(i = 0; i < Size1; i++)
arr[i] = malloc(sizeof(float*) * Size2); // 2nd array setup at each element of 1st array
现在像这样访问它:
for(i = 0; i < Size1; i++)
for(j = 0; j < Size2; j++)
printf("%f", arr[i][j]);
Size1
和 Size2
是第一个数组和第二个数组的大小。
您可以在第一个数组元素中设置不同大小的单个数组,因为您需要在没有循环的情况下通过更改 Size2
变量来完成此操作。
希望这会有所帮助。
关于c - 如何在 ANSI C 中动态分配 POINTERS 的二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44631900/