在链表中打印空指针



我有一个名为arrayOfElements的结构体数组,这些结构体被称为element它们有一个void指针

typedef struct {
    void* data;
} Element;

malloc'd arrayOfElements

Element* arrayOfElements;
arrayOfElements= malloc(4 * sizeof(Element));

,并在strucs

中存储了int型和字符串。
arrayOfElements[3].data = malloc( sizeof(int) );
ptr = arrayOfElements[3].data;
*ptr = 65;

拷贝字符串(arrayOfElements[1]。数据,令牌);

然后我创建了一个链表

typedef struct LinkedList {
    void* arrayOfStruct;
    struct LinkedList* next;
} LinkedList;

并且创建了一个函数来导入arrayOfELements实例并使void* arrayOfStruct指向它

LinkedList* insert(LinkedList* head, Element* inArrayOfElements) { 
    LinkedList* insertNode = malloc(sizeof(LinkedList));
    insertNode->next = head;
    insertNode->arrayOfStruct = (void*)inArrayOfElements;
    return insertNode;
}

我的问题是,在我把void* arrayofstrucc指向arrayOfELements的实例之后,我如何打印arrayOfELements的void*数据[3],我从以前就知道这是一个int,它的值是65

LinkedList中的当前节点-> arrayOfElements[3] ->元素结构中的数据成员(应该等于65)

我有一种感觉,我应该指向一个int指针,然后打印它,但我不确定这样做的语法

您需要某种方法来知道data成员指向的数据类型。一个额外的元素表示类型就可以了。

typedef enum {
    STR_TYPE,
    INT_TYPE,
    ...
} data_type;
typedef struct {
    data_type type;
    void* data;
} Element;

然后你可以这样设置元素:

arrayOfElements[3].type = INT_TYPE;
arrayOfElements[3].data = malloc( sizeof(int) );
int *ptr = arrayOfElements[3].data;
*ptr = 65;
arrayOfElements[1].type = STR_TYPE;
strcpy(arrayOfElements[1].data, token );

,像这样读:

Element *curr = &list_node->arrayOfStruct[3];
if (curr->type == INT_TYPE) {
    int *pint = curr->data;
    printf("int data = %dn", *pint);
}

相关内容

  • 没有找到相关文章

最新更新