我从一个简单的想法开始。
我有一个结构,里面有我需要修改的东西
typedef struct {
int stuff;
int things;
unsigned long long store;
} line;
我需要制作这些结构的 2d 数组,依赖于已经读入并初始化的另外两个数字。 然而,当我尝试只是创造
line book[X][Y];
我到处都是段错误。
我知道我需要使用 malloc,但无论我尝试什么,我似乎都无法做到这一点!
如何实现我的目标?我真的只是需要帮助理解malloc,这是一个如此陌生的概念。 如果有人能帮助我,那就太好了。
一种方法是使用双指针到行,因为使用一个指针可以分配单个行"数组",使用双指针可以分配行"数组"的"数组"。
如果您有任何疑问,请参阅此处。
因此,您可以将"数组"的内存分配给指向行的指针,例如。
line **book = NULL;
book = malloc(sizeof(line *) * X);
有了这个,你将有一个指向行的指针的"数组",然后你必须通过书的每个元素迭代,使每个指针指向另一个"数组",为此,我们对书的每个元素使用 malloc。
for (i = 0; i < X; i++)
book[i] = malloc(sizeof(line) * Y);
另外,当您完成指针时,不要忘记释放指针。