gpt4 book ai didi

c - 结构中的 Malloc

转载 作者:行者123 更新时间:2023-12-04 10:12:43 24 4
gpt4 key购买 nike

我刚刚开始学习有关 C 编程的类(class),但我一直在使用 malloc() 函数。我有一个代码来实现段的链表。

#include <stdlib.h>
#include <stdio.h>

typedef struct{
struct {
double x, y;
} point;
void *next;
void *prev;
} segment_t;

typedef struct {
segment_t *first;
segment_t *last;
} poly_t;

现在,如果我想为结构 segment_t 分配内存,我是否也应该为两个空指针 *next*prev 分配内存?poly_t 结构中的 *first*last 也一样吗?

感谢您的帮助!

最佳答案

malloc(sizeof(segment_t)) 为整个结构分配足够的内存,包括x, y, nextprev

但是,它不会初始化任何这些成员。如果您希望 nextprev 指向某物,则需要为它们分配一个指针。它是新分配的指针 (malloc(...)) 还是现有指针(包括 NULL)由您决定。

在这种特殊情况下,segment_t 的一个实例是双向链表的一个节点。因此,s->nexts->prev 应该被初始化为 NULL,直到节点(段)被添加到列表中。


正如来自莫斯科的@Vlad 所提到的,您不应该使用 void* 作为指针,而应该使用以下内容:

typedef struct segment {
struct {
double x, y;
} point;
struct segment *next;
struct segment *prev;
} segment_t;

关于c - 结构中的 Malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58956560/

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