2013-03-07 68 views
1

所以,基本上,我有兩個不同的結構定義在兩個不同的.h文件(vcard.h和bst.h)中,它們都包含在當前文件中。下面是結構的定義:引用C中的嵌套結構

struct bst { 
    vcard *c; 
    bst *lsub; 
    bst *rsub; 
}; 

struct vcard { 
    char *cnet; 
    char *email; 
    char *fname; 
    char *lname; 
    char *tel; 
}; 

在我的BST插入功能,我試圖運行以下命令:

bst *bst_insert(bst *t, vcard *c){ 

    if (strcmp(c->cnet, t->c.cnet) > 0){ 
    ... 
    } 
} 

編譯器吐回以下錯誤:

「BST。 c:28:錯誤:請求成員'cnet'的東西不是結構或聯盟「

我是否調用t-> c.cnet不正確?

回答

5

c是一個指針,你需要T-> C-> CNET

+0

感謝加里!出於某種原因,我認爲第二個箭頭應該是一個點。對此,我真的非常感激 :) – 2013-03-07 23:54:27

1

應該是t->c->cnet因爲c是一個指向vcard

0

只是一個側面回答,您還可以使用.運營商訪問指向結構的指針的成員。你只需要解引用指針先用括號由於predecence那麼你可以訪問像這樣t->(*c).cnet成員。該->符號是因爲這樣做的速記方式創建。