gpt4 book ai didi

c - 如何在 C 中分配和声明结构数组的 3D?

转载 作者:太空狗 更新时间:2023-10-29 17:13:17 25 4
gpt4 key购买 nike

如何在 C 中分配和声明 3D 结构数组?你是先分配数组还是声明它?我觉得你必须先分配它,这样你才能声明它,所以它在堆上,但是你如何分配尚未制作的东西?另外,你应该一次分配它还是一个元素一个元素地分配?我是否将结构正确地放入数组中?我对如何做到这一点的猜测是:

header.h

struct myStruct{
int a;
int b;
};
typedef struct myStruct myStruct_t;

ma​​in.c

#include "header.h"
#include <stdio.h>
#include <stdlib.h>
int main(void){

int length=2;
int height=3;
int width =4;
myStruct_t *elements;
struct myStruct arr = (*myStruct_t) calloc(length*height*width, sizeof(myStruct);
//zero based array
arr[length-1][height-1][width-1];

int x=0;
while(x<length){
int y=0;
while(y<height){
int z=0;
while(z<depth){
arr[x][y][z].a=rand();
arr[x][y][z].b=rand();
z++;
}
y++;
}
x++;
}
return 0;
}

最佳答案

简单的方法是:

 myStruct_t (*arr2)[height][width] = calloc( length * sizeof *arr );

然后你的循环可以访问 arr2[x][y][z].a = rand(); 等等。如果您不熟悉这种调用 calloc 的方式,see here .与 malloc 一样,在继续之前检查 arr2 是否为 NULL

三指针方法并不是真正实用的解决方案。如果您的编译器不支持可变修改类型,则应将数组展平为一维。

关于c - 如何在 C 中分配和声明结构数组的 3D?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653906/

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