我尝试动态分配二维数组的一个维度.该数组声明如下:
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)
返回分配的数组的正确方法是什么?
根据顺时针/螺旋规则,以下声明:
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)
归档时间: |
|
查看次数: |
172 次 |
最近记录: |