다음 코드가 수행하는 작업을 이해하지 못합니다.해시에있는 포인터에 대한 포인터 테이블
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
에 대한 포인터 배열을 생성하기 위해 NodeT* hashTable[arraySize]
과 같은 것을 사용하여 연결 작업을 수행했습니다. 이 후에 배열을 위해 dinamycally 메모리를 할당하기로 결정 했으므로 (필자는) 동등한 NodeT* (*mockTable)
을 사용하려고했습니다.
제 질문은 다음과 같습니다 : 왜 (*hashTable)[i].info
을 사용해야하고 (*hashTable)[i]->info
을 사용해야합니까? 늘어나는만큼 우려, hashTable
NodeT
포인터의 배열을 가리키는 포인터입니다, 그래서이 일은 안됩니다. 내가 여기서 뭐 잘못 됐어?