此前C++和類型定義的假設下,得到一個類型的結構的唯一辦法是通過這種語法,這是獲得自我型連接節點唯一方式。
struct Foo
{
int val;
struct Foo *link;
};
在C中,這需要的Foo的任何使用爲:
struct Foo foo;
struct Foo *foo_ptr;
等。
甲的typedef幫助此通過這樣做:
typedef struct Foo
{
int val;
struct Foo *link;
} Foo;
由於現在你可以這樣做:
Foo foo; // same as struct Foo
Foo *foo_ptr; // same as struct Foo *
注意:使用typedef來別名struct Name
並不侷限於Name
作爲別名。喲是完全有效的做到這一點以及:
typedef struct Foo
{
int val;
struct Foo *link;
} Bar;
現在下面是可行的;
struct Foo foo;
Bar bar;
struct Foo *fooptr = &bar;
Bar *barptr = &foo;
真的讓你希望你在一天後在C中編程,不是嗎?可能沒有把事情弄清楚,但希望少一點灰色。
放在結尾一個分號,它是完全有效的。 – WhozCraig
是其有效.. –
咩,而這可能是有效的,只有* C程序員做這個*。你不應該爲此感到難過。您的講師OTOH ... –