Re: [討論] typedef的問題請教

看板C_and_CPP作者 (chuegou)時間8年前 (2016/06/18 21:30), 8年前編輯推噓4(406)
留言10則, 4人參與, 最新討論串1/1
我想要問一些相關的問題 在C語言情況下 我通常會在.h裡 做typedef struct 且在裡面放入指標函式 做出類似成員/方法的結構 由其他.c引用和宣告變數 像是 typedef struct tree_node TREE_NODE; /* 自我參考用 */ typedef struct tree_node{ /* 成員 */ char *word; TREE_NODE *left; TREE_NODE *right; /* 方法 */ void (*insert)(TREE_NODE**, char*); }tree_node; 問題 我是否可以在"變數宣告時"就指定指標函式指向的位置? 目前我是寫一個"初始化函式" 在"用到這個struct前"將指標函式指向我要的函式位置 可是這個"初始化函式"還是沒辦法包進struct中 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.57.154 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1466256656.A.C18.html

06/18 21:52, , 1F
聽起來你需要用C++的constructor XD
06/18 21:52, 1F

06/18 22:14, , 2F
不是, 這感覺聽起來像是有簡單物件的 C
06/18 22:14, 2F

06/18 23:41, , 3F
可附上你說的 "初始化函式" 嗎?這樣做應該不會有問題。
06/18 23:41, 3F

06/18 23:42, , 4F
另你的問題一應該是可以的 (struct 宣告並給初值)。
06/18 23:42, 4F
初始化大概會是長這樣 void tree_init(**TREE_NODE node) { (*node)->insert = insert_function; /* 把函式的位置丟給指標函式 */ }

06/19 00:46, , 5F
是說, 這種東西你其實可以學 FILE* 的方式
06/19 00:46, 5F

06/19 00:46, , 6F
初始化資源一定要透過某個函式去取得
06/19 00:46, 6F

06/19 00:46, , 7F
那在那個函式裡你就可以進行你要的初始化了
06/19 00:46, 7F

06/19 00:47, , 8F
給用戶使用的就一律類似 FILE* 這樣, 只要宣告指標即可
06/19 00:47, 8F

06/19 00:48, , 9F
不要給用戶使用結構體本身
06/19 00:48, 9F
還沒這樣想過 我試試看 感謝三位 ※ 編輯: chuegou (111.243.57.154), 06/19/2016 11:07:46

07/06 13:40, , 10F
應該void tree_init( TREE_NODE ** node) 才對?
07/06 13:40, 10F
文章代碼(AID): #1NPKqGmO (C_and_CPP)