2015-06-04 68 views
-7
typedef struct node{ 
    int data; 
    struct node *next; 
}Node; 

会这有什么区别,如果我使用“节点”而不是“节点”我们可以使用typedef struct node node;

typedef struct node{ 
    int data; 
    struct node *next; 
}node; 
+3

你试过了吗?它(没有)工作吗? –

+0

这只是一个名字。 –

+0

它是有效的。我们可以使用它。 – BLUEPIXY

回答

0

不,它只是一个名字。然而,大多数C命名约定规定typedef结构是大写,因此大多数更喜欢Node

+0

好的,但是为什么我在'C'代码中使用'C++'命名约定(#只是为了好玩)。 :-) –

+0

哎哟....我修正了这个问题。谢谢 :) –

3

结构,联合和枚举的标签名称与其他标识符(包括typedef名称)占用不同的名称空间,因此typedef struct node { ... } node;有效。

结构和工会成员的名字占据的另一个命名空间,所以下面是合法的,如果是不明智的:

typedef struct foo { int foo; } foo; 

什么你不能做的是一样的东西

typedef struct foo {...} foo; 
foo foo; 

因为typedef名称和变量名称都占用相同的名称空间。

相关问题