我正在研究一个项目,我对理解逻辑有疑问。我很感激我有人可以向我解释或至少更清楚。 如果数据结构发生了变化,那么它就是哈希表
代码:
typedef struct tHTElem {
char* key;
int data;
struct tHTElem* ptrnext;
} tHTElem;
typedef tHTElem* tHT[MAX_SIZE];
只要我明白这一点,tHT[]
是指向结构tHTElem
的指针数组?
所以如果我想创建指向这个数组的一个元素的指针,我应该像这样创建它?
tHTElem *ptrToElem = NULL;
并像这样初始化它?
ptrToElem = tHT[42];
我有点迷失了...... 谢谢你的任何建议。
答案 0 :(得分:2)
您不需要该行中的typedef
typedef tHTElem* tHT[MAX_SIZE];
因为当您声明结构时,您已经使用了typedef
语句。从那时起,您只需要使用类型名称tHTElem
。
无论类型如何,当您声明一个数组时,都会声明一个指针。所以:char **c
等于:char * c[]
,这意味着c
是一个指向内存中某个地方的指针,其中有一个指向数组的指针。
在您的情况下,您有一个tHTElem* tHT[MAX_SIZE];
,与tHTElem** tHT;
相同。因此,如果你想为元素42创建一个poiter,你应该这样做:
tHTElem *ptrToElem;
ptrToElem = *tHT[42];
*
中的... = *tHT[42];
用于访问数组所在的内存,42是其位置。