'typedef in C'的用途是什么?

熙庆润

头文件有3个版本。

版本1:

typedef struct node
{
    void* dataPtr;
    struct node* link;
} NODE;

版本2:不包含旧类型名称“节点”(typedef oldTypeName newTypeName)

typedef struct
{
    void* dataPtr;
    struct* link;
} NODE;

版本3:不带typedef

struct
{
    void* dataPtr;
    struct* link;
} NODE;

根据C:typedef结构名称{...}; VS typedef struct {...}名称;,版本1定义的“节点”是多余的,我将其更改为版本2,它工作正常。

再次根据这个答案,当不使用'typedef'时,不能重用'NODE'。

但是,使用此版本3头文件的代码也可以正常工作。(NODE被使用了两次两次。)

这是代码:

/* Create a list with two linked nodes.*/
#include <stdio.h>
#include <stdlib.h>
#include "version3.h"                      //Header file

int main (void)
{
//Local Definitions
    int* newData;
    int* nodeData;
    NODE* node;

// Statements
    newData = (int*)malloc (sizeof (int));
    *newData = 7;
    node = createNode(newData);

    newData = (int*)malloc (sizeof (int));
    *newData = 75;
    node->link = createNode(newData);

    nodeData = (int*)node->dataPtr;
    printf ("Data from node 1: %d\n", *nodeData);

    nodeData = (int*)node->link->dataPtr;
    printf ("Data from node 2: %d\n", *nodeData);
    return 0;
}       //main

在这种情况下,“ typedef”有什么用?(假设我在这里重用了NODE。->如果这个假设不成立,请告诉我为什么。我不熟悉C语言。)

吊床

typedef用于为类型赋予新名称。当您使用的第三个版本时,struct只需声明NODEtype即可struct{ void* dataPtr; struct* link;}现在,如果必须声明与of相同类型的另一个变量,该NODE怎么办?只有一种选择,您必须与NODE其他选项一起声明它
如果同时声明两个结构,或者使用结构标记或相同的类型名称(使用typedef声明两个结构,则它们是兼容的

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章