Ich arbeite an dem Erstellen einer Hash-Tabellenimplementierung für eine Zuordnung. Ich habe meine Hash-Tabelle als Struktur wie folgt definiert:C-Struktur mit Zeiger auf Zeiger initialisieren
typedef struct hashtable {
int size;
int entries;
int table*; // pointer to table. Each entry will point to linked list
// of key-value nodes
} hashtable;
Ich habe die Hash-Tabelle Struktur in einem Verfahren unter Verwendung Doppel Zeiger zu initialisieren, zB:
void init(hashtable** ht) {
...
}
ich eine grundlegende Implementierung geschrieben haben, unter:
#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);
}
aber ich erhalte den folgenden Compiler-Fehler:
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 bin ich verwirrt durch folgende: 1. Ich bin mir nicht sicher, wie man eine neue Struktur in der Init-Funktion erstellt, wenn ein Zeiger auf Zeiger übergeben wird. 2. Wie ändere ich nach dem Zuweisen der Struktur die Strukturelementattribute?
diese '* HT-> size = 3;' -> '(* ht) -> size = 3;' ' –
int Tabelle *; '??? – AnT