Re: [問題] 結構和指標定義問題

看板C_and_CPP作者 (-6.2598534e+18f)時間10年前 (2015/04/16 18:02), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

04/16 20:02, , 1F
先寫 typedef struct ListNode ListNode;
04/16 20:02, 1F

04/16 20:02, , 2F
再寫 struct ListNode { char data; ListNode *nextptr; };
04/16 20:02, 2F

04/17 12:34, , 3F
哦哦 原來!
04/17 12:34, 3F
文章代碼(AID): #1LBuZ78e (C_and_CPP)
文章代碼(AID): #1LBuZ78e (C_and_CPP)