头文件有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
只需声明NODE
type即可struct{ void* dataPtr; struct* link;}
。现在,如果必须声明与of相同类型的另一个变量,该NODE
怎么办?只有一种选择,您必须与NODE
其他选项一起声明它。
如果同时声明两个结构,或者使用结构标记或相同的类型名称(使用typedef
)声明两个结构,则它们是兼容的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句