[爆卦]typedef struct宣告是什麼?優點缺點精華區懶人包

為什麼這篇typedef struct宣告鄉民發文收入到精華區:因為在typedef struct宣告這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者hunandy14 (Charlott.HonG)看板C_and_CPP標題[問題] typed...



不好意思問題有點多,
我有標星號提示一下問題在哪裡


-------------------------------------
C++跟C的結構差有一點差別
在宣告時可以省掉(struct)
之前好像看過人家說C++的
結構本身就帶typedef(這是對的嗎?)
★還是純粹只是 C 比較嚴謹而已?

struct node_struct {
(struct) node_struct *link;
int data;
(struct) node_struct *rlink;
};

宣告時也可以省掉
(struct) node_struct head;


-------------------------------------
一般來說把它寫在一起像這樣

typedef struct node_struct {
struct node_struct link;
int data;
struct node_struct rlink;
} node;

然後在主程式內可以直接用node宣告
-------------------------------------
用typedef並放在上面可以省掉一些字
把結構內的宣告替換成node

typedef struct node_struct node;
struct node_struct {
node link;
int data;
node rlink;
};
-------------------------------------
也可以放到後面去,不過結構裡面不能替換

struct node_struct {
struct node_struct link;
int data;
struct node_struct rlink;
};
typedef struct node_struct node;
-------------------------------------
★應該要在前面還是後面呢,有什麼差異嗎
感覺上好像是要放前面(可以省)



開頭的struct好像不能省掉我這樣寫就不行了?

typedef struct node_struct node;
node {
node link;
int data;
node rlink;
};
--------------------------------------


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
然後就是類別要用到結構的話
程式碼:https://goo.gl/Xu3Hij

★ 我應該把結構寫在類別 [private, public, 類別外(全域)]?

我是試著把它寫在 pravate 內,因為也只有這個類別會用到
並且我希望可以利用 template 決定他的型態

把結構寫在類別內
只能把上述的 typedef 放在後面
struct XX{
...};
typedef struct XXX A;

或者乾脆寫在一起
typedef struct XX{
...} A;

如上附程式碼
我如果把它放到前面去
編譯會出錯
typedef struct XXX A;
struct XX{
...};

C:\Users\Kanasaki\Desktop\double_link_obj\main.cpp:22:10: error: field 'head'
has incomplete type
node head;

有寫到head的都會出錯
★ 為什麼這裡只能放在下面了呢

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.35.139.127
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1467704630.A.CC0.html
Caesar08: 在C裡面,沒用typedef的話,每次定義struct的變數 07/05 15:51
Caesar08: 都需要加上一個struct會很麻煩。所以才在前面加typedef 07/05 15:52
Caesar08: 至於為什麼C++不用typedef,我就不清楚了 07/05 15:55
Caesar08: 我不懂為什麼寫C++要用C的寫法,typedef根本是累贅 07/05 15:59
痾...我以為這樣是比較好的寫法 QuQ
是說不要typedef直接用嗎,比如說
struct XXX{
...} AAA;

AAA abc;
這樣嗎
BlazarArc: http://stackoverflow.com/questions/612328/ 07/05 16:02
我看一下需要點時間QQ
Caesar08: 是struct A{...}; A a; 07/05 16:06
阿~對齁 C++ 可以直接用 了解~
Caesar08: 要不就是C++的寫法,要不就是C的寫法,不要混在一起 07/05 16:09
Sidney0503: 因為有class 不要用typedef 07/05 16:58
LPH66: C++ struct 就只是預設 public 的 class 07/06 20:43
LPH66: 再加上 C++ 指稱 class 名不需加上 'class' 關鍵字 07/06 20:43
了解~
※ 編輯: hunandy14 (120.117.72.133), 07/07/2016 17:38:57

你可能也想看看

搜尋相關網站