指向哈希表中指针的指针

Pointers to pointers in hash Tables

本文关键字:指针 哈希表      更新时间:2023-10-16

我不太明白为什么下面的代码会这么做。

void initializeTable()
{
 NodeT* (*hashTable) ;
 *hashTable=(NodeT*)malloc(30*sizeof(NodeT));
  int i;
  for(i=0;i<30;i++)
    {
      (*hashTable)[i].info=(char*)malloc(10*sizeof(char));
       strcpy((*hashTable)[i].info,"a");
        cout<<(*hashTable)[i].info<<" ";
    }
}

我正在努力了解哈希表是如何工作的。在我的程序的第一个版本中,我使用了类似NodeT* hashTable[arraySize]的东西来创建指向NodeT的指针数组,以便进行链接。在这之后,我决定尝试为数组分配普通内存,所以我尝试使用(我认为)等效的NodeT* (*mockTable)

我的问题是:为什么我必须使用(*hashTable)[i].info,而不是(*hashTable)[i]->info?就我而言,hashTable是一个指向指向NodeT的指针数组的指针,所以这不应该发生。我做错了什么?

你有了基本的想法,但似乎你计算错了指针你的hashTable是一个指向指针(**)的指针,当你在strcpy中访问它时,你实际上会得到这个双指针的值,第1个是数组索引[i],第二个是*hashTable,当访问一个调用其中value的变量时。因此,如果定义一个duel指针变量支柱温度;并且您想要访问其中的字段你可以*temp[i].字段但如果您只想访问单个指针级别(相同的**temp),则需要:temp[i]->字段或*temp->字段两者都只"弹出"最顶端的指针