作者cat99961 (阿湯)
看板C_and_CPP
標題[問題] 有關於typedef省略的問題?
時間Mon May 11 14:37:18 2020
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
推 b0920075: insert node 那邊你把 btree 當 data type 了吧 05/11 14:45
→ shadow0326: 刪掉之後btree就是一個variable,不是一個type 05/11 14:45
→ shadow0326: 所以11行就gg 05/11 14:46
推 chuegou: 就...unknown type name ‘btree’ 沒有btree這個型別阿 05/11 21:08
非常感謝你們,我明白了..
※ 編輯: cat99961 (1.168.193.69 臺灣), 05/11/2020 21:21:31