看板 C_and_CPP 關於我們 聯絡資訊
(課本的程式) 1. typedef struct listnode *listpointer; 2. typedef struct listnode{ 3. int data; 4. listpointer link; 5. }; 主要是這一段宣告不是很懂, 1. typedef int aaa 的用法是將aaa當成int這個型態來使用, 同時也可以用aaa來宣告其他變數(是吧!?),那我有問題的 是第一行,我一直沒辦法理解這一行的意思。 2. 第四行的link 為何不用加上"*" ?? 感謝各位幫忙! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.222.38
kevinptt:第一行要解讀成 typedef struct listnode * listpointer; 11/12 00:02
kevinptt:listpointer 是它的名,型態是一個listnode的指標 11/12 00:03
tjjh89017:因為listpointer是指標? 11/12 00:03
kevinptt:所以第四行等價於 listnode * link; 11/12 00:04
kevinptt:對,它就定義成一個指標的型態 11/12 00:04
mozzan:那我之後若宣告一變數為 listpointer p1; 那p1是一個指標 11/12 00:10
james732:就跟 struct listnode * pl; 是一樣的意思 11/12 00:10
mozzan:型態變數,而且他包含著data變數和一個指向listpointer 11/12 00:11
mozzan:結構的指標?? 11/12 00:13
kevinptt:喔不,p1就是一個指向一個listnode的指標,就只是指標 11/12 00:16
kevinptt:就像 int * a; a並沒有存int的功能,而是指向另一個int 11/12 00:16
mozzan:我指的不是在struct 內宣告listpointer p1; 而是在之後宣告 11/12 00:47
mozzan:listpointer p1; 如果這等於struct listnode *p1的話,是不 11/12 00:48
james732:如果你只是寫 listpointer p1; 它就只是一個指標 11/12 00:48
james732:你說它還包含著其他東西,這種說法就會不正確 11/12 00:49
mozzan:是呢? 11/12 00:49
LPH66:不管在哪裡寫 listpointer p1; 都等同 struct listnode *p1; 11/12 02:20
mozzan:那再請問,程式的第一行可否解讀成listpointer 是一個指向 11/13 18:00
mozzan:listnode 這個結構的指標?? 謝謝 11/13 18:01
tropical72:不行,去弄清楚 typedef 實際意義,它只是重定一個資料型 11/13 18:05
tropical72:態,而不會因此產生一個資料型態(或物件). 11/13 18:05
mozzan:所以"listpointer"指的是'指向listnode結構的指標型態'? 11/13 19:38
james732:沒錯,它就只是一種型態 11/13 19:39
mozzan:謝謝各位解答 11/13 19:47