簡體   English   中英

C-'typedef構造SymTable * SymTable_T; 意思?

[英]C - What does 'typedef struct SymTable *SymTable_T; mean?

我正在制作一個對稱的ADT,並且絕對沒有指針。 有人可以分解語句typedef struct SymTable *SymTable_T; 為了我? typedef在做什么? *SymTable_T指向什么?

此外,如果想獲得額外的互聯網積分,如果我需要我的SymTable制作<key, value>對的副本,有人可以向我指出正確的方向嗎? 我的猜測是:

typedef struct SymTable *SymTable_T;
{
    char *key;
    int *value;
    struct SymTable *next; //I will have linked lists to avoid collisions
};

typedef struct SymTable *SymTable_T; 如果表達如下,將更容易理解:

typedef struct SymTable* SymTable_T;

因此,這是將SymTable_T聲明為指向struct SymTable的指針。

該聲明之后的內容是垃圾,我什至不認為它應該編譯。 也許以下意思是:

struct SymTable
{
    char* key;
    int* value;
    struct SymTable* next; //I will have linked lists to avoid collisions
};

typedef struct SymTable* SymTable_T;

typedef語句將指向結構的指針類型定義為新類型。

typedef struct SymTable *SymTable_T;

無論在哪里進行變量聲明:

SymTable_T newTable;

等同於做:

struct SymTable *newTable;

最后,在您的代碼上,您可能試圖按所述定義類型,但也將結構類型聲明為相同類型。

這是不正確的-實際上,按照這種方式,它就像在typedef語句后僅具有一個代碼塊,僅包含變量聲明,這是有效的,但沒有執行任何與所需內容接近的操作。

嘗試指定您的類型:

struct SymTable
{
    char *key;
    int *value;
    struct SymTable *next; //I will have linked lists to avoid collisions
};

然后使用typedef執行上述操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM