3 回答

TA貢獻2037條經(jīng)驗 獲得超6個贊
您可以定義typedef并在一個語句中首先聲明該結(jié)構(gòu),然后在后續(xù)定義中定義該結(jié)構(gòu)。
typedef struct A A;
struct A
{
int a;
int b;
A* next;
};
編輯:正如其他人提到的那樣,沒有前向聲明,結(jié)構(gòu)名稱在結(jié)構(gòu)定義內(nèi)仍然有效(即,您可以使用struct A),但是在定義類型定義完成后,typedef才可用(因此,使用只是A無效的) )。僅使用一個指針成員,這可能并不太重要,但是,如果您具有包含許多自類型指針的復(fù)雜數(shù)據(jù)結(jié)構(gòu),則可能會有所減少。

TA貢獻1876條經(jīng)驗 獲得超6個贊
除了第一個答案之外,如果沒有typedef和正向聲明,這也可以。
struct A
{
int a;
int b;
struct A *next;
};

TA貢獻1775條經(jīng)驗 獲得超11個贊
拜托,您使用的是C語言,而不是C ++語言。
如果您真的必須typedef一個結(jié)構(gòu)體(大多數(shù)與我一起工作的程序員都不會1),請執(zhí)行以下操作:
typedef struct _A {
int a;
int b;
struct _A *next;
} A;
以清楚地區(qū)分_A(在struct名稱空間中)和A(在類型名稱空間中)。
1 typedef隱藏它所指向的類型的大小和存儲量-(我同意)論點是,在像C這樣的低級語言中,試圖隱藏任何東西都是有害的且適得其反。struct A隨時隨地習(xí)慣打字struct A。
- 3 回答
- 0 關(guān)注
- 662 瀏覽
添加回答
舉報