我尝试动态分配二维数组的一维。数组声明如下:

uint16_t coord[][2];

我只需要分配行,坐标的数目。
在google上,我找到了足够的代码来分配这两个维度,从:
uint16_t **coord;

我不确定是否还能像上面那样声明数组。我需要做的是:
uint16_t *coord[2];

还是不呢?
我还需要从分配函数返回数组(指向它的指针),以便其他函数可以像这样访问数组:
foo = coord[4][0];
bar = coord[4][1];

返回已分配数组的正确方法是什么?

最佳答案

根据clockwise/spiral rule,以下声明:

uint16_t *coord[2];

是一个由两个指针组成的数组,这似乎不是您想要的。但是,您可以改为:
uint16_t (*coord)[2];

您可以这样分配内存:
coord = malloc(num_entries * sizeof(uint16_t[2]));

现在您可以将其作为普通多维数组访问:
coord[0][0] = 1;
coord[0][1] = 2;
coord[1][0] = 3;
coord[1][1] = 4;

关于c - 分配二维数组的一维并返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11115572/

10-16 17:05