分配二维数组的一维并返回

Joe*_*ann 0 c arrays

我尝试动态分配二维数组的一个维度.该数组声明如下:

uint16_t coord[][2];
Run Code Online (Sandbox Code Playgroud)

我只需要分配行数,坐标数.通过谷歌,我发现足够的代码来分配这两个维度,从:

uint16_t **coord;
Run Code Online (Sandbox Code Playgroud)

我不确定我是否仍然可以如上所述声明数组.我需要这样做:

uint16_t *coord[2]; 
Run Code Online (Sandbox Code Playgroud)

或不?

我还需要从分配函数返回数组(指向它的指针),以便其他函数可以像这样访问数组:

foo = coord[4][0];
bar = coord[4][1];
Run Code Online (Sandbox Code Playgroud)

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

Som*_*ude 5

根据顺时针/螺旋规则,以下声明:

uint16_t *coord[2];
Run Code Online (Sandbox Code Playgroud)

是一个两个指针的数组,似乎不是你想要的.但是你可以改用它:

uint16_t (*coord)[2];
Run Code Online (Sandbox Code Playgroud)

您可以像这样为它分配内存:

coord = malloc(num_entries * sizeof(uint16_t[2]));
Run Code Online (Sandbox Code Playgroud)

现在您可以将其作为普通的多维数组访问:

coord[0][0] = 1;
coord[0][1] = 2;
coord[1][0] = 3;
coord[1][1] = 4;
Run Code Online (Sandbox Code Playgroud)