I'm working on creating a hash table implementation for an assignment. I've defined my hashtable as struct as follows:
typedef struct hashtable {
  int size;
  int entries;
  int table*;   // pointer to table. Each entry will point to linked list 
                // of key-value nodes 
} hashtable;
I have to initialize the hashtable struct in a method using double pointers, e.g.:
void init(hashtable** ht) {
...
}
I've written a basic implementation below:
#include <stdio.h>
#include <stdlib.h>
typedef struct hashtable {
  int size;
  int entries;
  int table*;   // pointer to table. Each entry will point to linked list 
                // of key-value nodes 
} hashtable;
void init(hashtable**);
void init(hashtable** ht) {
    *ht = (hashtable *) malloc( sizeof(hashtable) );
    *ht->size = 3;
}
int main(){
  hashtable *t = NULL;
  init(&t);
  printf("t.size: %i", t->size);
}
However, I keep getting the following compile error:
ll.c:19:8: error: member reference base type 'hashtable *' (aka 'struct hashtable *') is not a
      structure or union
    *ht->size = 3;
     ~~^ ~~~~
1 error generated.
So I'm confused by the following: 1. I'm not sure how to create a new struct in the init function when being passed a pointer to pointer. 2. After allocating the struct, how do I modify the struct member attributes?




*ht->size = 3;-->(*ht)->size = 3;int table*;???