[問題] 有關於typedef省略的問題?

看板C_and_CPP (C/C++)作者 (阿湯)時間5年前 (2020/05/11 14:37), 5年前編輯推噓2(202)
留言4則, 3人參與, 5年前最新討論串1/1
1. #include <stdlib.h> 2. #include <stdio.h> 3. struct tree /* 樹的結構宣告 */ 4. { 5. int data; /* 節點資料 */ 6. struct tree *left; /* 指向左子樹的指標 */ 7. struct tree *right; /* 指向右子樹的指標 */ 8. }; 9. typedef struct tree treenode; /* 樹的結構新型態 */ 10.typedef struct tree *btree; /* 宣告樹節點指標型態 */ /* ---------------------------------------- */ /* 插入二元樹的節點 */ /* ---------------------------------------- */ 11. btree insert_node(btree root, int value) 12.{ 13. if(root != NULL){ 14. if(root->data > value) 15. root->left = insert_node(root->left , value); 16. else 17. root->right = insert_node(root->right, value); 18. return root; 19. } 20. else{ btree newnode; 21.newnode = ( btree ) malloc(sizeof(treenode)); 22. newnode->data=value; 23. newnode->left=NULL; 24. newnode->right=NULL; 25. return newnode; 26. } 27. } 我把第10行的typedef struct tree *btree 改成struct tree *btree,就會編譯不過 (unknown type name ‘btree’),但我不明白為什麼,在我的認知裡第10行的 typedef是多餘的,但刪掉後卻編譯不過,為什麼呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.34.89 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1589179040.A.439.html

05/11 14:45, 5年前 , 1F
insert node 那邊你把 btree 當 data type 了吧
05/11 14:45, 1F

05/11 14:45, 5年前 , 2F
刪掉之後btree就是一個variable,不是一個type
05/11 14:45, 2F

05/11 14:46, 5年前 , 3F
所以11行就gg
05/11 14:46, 3F

05/11 21:08, 5年前 , 4F
就...unknown type name ‘btree’ 沒有btree這個型別阿
05/11 21:08, 4F
非常感謝你們,我明白了.. ※ 編輯: cat99961 (1.168.193.69 臺灣), 05/11/2020 21:21:31
文章代碼(AID): #1UkFAWGv (C_and_CPP)
文章代碼(AID): #1UkFAWGv (C_and_CPP)