[英]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.