指向数组指针元素的指针

时间:2017-11-18 23:50:45

标签: c arrays pointers

我正在研究一个项目,我对理解逻辑有疑问。我很感激我有人可以向我解释或至少更清楚。 如果数据结构发生了变化,那么它就是哈希表

代码:

typedef struct tHTElem {
    char* key;
    int data;
    struct tHTElem* ptrnext;
} tHTElem;  

typedef tHTElem* tHT[MAX_SIZE];  

只要我明白这一点,tHT[]是指向结构tHTElem的指针数组? 所以如果我想创建指向这个数组的一个元素的指针,我应该像这样创建它?

tHTElem *ptrToElem = NULL;  

并像这样初始化它?

ptrToElem = tHT[42];  

我有点迷失了...... 谢谢你的任何建议。

1 个答案:

答案 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是其位置。