gpt4 book ai didi

c - 如何动态分配二维结构数组?

转载 作者:太空狗 更新时间:2023-10-30 03:40:35 25 4
gpt4 key购买 nike

维度在编译时是未知的,所以我试图动态分配一个二维结构数组。代码可以编译,但在访问元素时访问错误。

// The struct
typedef struct
{
NSInteger numActors;
Actor *a1;
Actor *a2;
Actor *a3;
Actor *a4;
Actor *a5;
} GridNode;

// In interface
GridNode **grid;

// In init
NSInteger nx = inFrame.size.width / blockSize;
NSInteger ny = inFrame.size.height / blockSize;
grid = malloc(sizeof(GridNode) * nx * ny);
grid[10][20].numActors = 3; // EXC_BAD_ACCESS

最佳答案

C 只有一维数组,所以二维数组可以用两种方式定义:

  1. 作为数组的数组,像GridNode **grid,所以要被grid[x][y]访问,但是你必须分别初始化每一行(正确的,因为 yehnan 设法首先回答):

    grid=malloc(sizeof(GridNode*)*nx);  
    for(int e=0;e<nx;e++) grid[e]=malloc(sizeof(GridNode)*ny);
  2. 作为具有棘手索引的一维数组:

    grid=malloc(sizeof(GridNode)*nx*ny);  
    grid[(10-1)*nx+20] //grid[10,20]

关于c - 如何动态分配二维结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3094355/

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