Эта строка неверна:
htData_ array[20] = htDataArray;
Невозможно назначить указатель на массив.
В отредактированном коде есть проблемная строка:
//point to the pointer that points to the first element in the array
ht.entries = &htDataArray;
На самом деле, синтаксически это правильно, поэтому не должно давать предупреждения.Но вы делаете неправильные вещи здесь.Если вы хотите, чтобы ht.entries
указывал на первый элемент массива, вам нужно объявить его как
htData_* entries; // 'struct' keyword not needed ahead of declaration
и назначить его как
ht.entries = &htDataArray[0];