看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《flyaway339 (豪)》之銘言: : 2.關於前面結構定義的部分為什麼不可以寫成下列形式: : : typedef struct{ : char data; : struct ListNode *nextptr; : }ListNode; : : typedef ListNode *ListNodeptr; 這個定義是將一個無名 struct (內含這些內容) typedef 為 ListNode 這名字 所以本來就沒有 struct ListNode 這個名字, 自然不給你用 原先的寫法是將struct ListNode (內含這些內容) typedef 為 ListNode 這名字 因此這時就有 struct ListNode 這個名字 : → a27417332: 我覺得這可能代表你要先看語法書再看這本資料結構 04/16 11:29 : → wvwvwvwvwv: 回答你第二點 依現在的編譯器VS 可以直接 04/16 13:35 : → wvwvwvwvwv: struct ListNode{ 04/16 13:36 : → wvwvwvwvwv: char data; ListNode* nextptr; 04/16 13:36 : → wvwvwvwvwv: }; //以後宣告結構可以直接 ListNode* Node; 04/16 13:37 這是 C++ 才允許的寫法 首先, C++ 所有 class 在指稱時直接稱其名, 不用加上 class 關鍵字 再來, C++ 的 struct 就只是預設 public 的 class 而已 因此 C++ 寫 struct ListNode {...}; 可以單用 ListNode 這名字指稱之 C 不行, 你必須完整寫出 "struct ListNode" 才能指稱之 這才是為什麼會有 typedef struct S {...} S; 這個 idiom 存在 這樣寫定義了一個 struct S (內含這些內容) 並將其 typedef 為 S 這名字 -- LPH [acronym] = Let Program Heal us -- New Uncyclopedian Dictionary, Minmei Publishing Co. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.30.32 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1429178567.A.228.html
yvb: 先寫 typedef struct ListNode ListNode; 04/16 20:02
yvb: 再寫 struct ListNode { char data; ListNode *nextptr; }; 04/16 20:02
ohyeah5566: 哦哦 原來! 04/17 12:34