2015-06-04 102 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名稱和變量名稱都佔用相同的名稱空間。

相關問題