Guten Morgen! Ich muss ein struct-Array (globale Variable) behandeln, die eine Liste simuliert. In der Praxis muss ich jedes Mal, wenn ich eine Methode aufruft, die Größe des Arrays 1 erhöhen und es in die neue Struktur einfügen.Simulieren einer Liste mit Array
Da die Array-Größe ist statisch, ist meine Idee Zeiger wie folgt zu verwenden:
- Die Struktur Array wird als Zeiger auf eine zweite Struktur Array deklariert.
- Jedes Mal, wenn ich die Methode increaseSize() aufruft, wird der Inhalt des alten Arrays in ein neues n + 1-Array kopiert.
- Der globale Array Zeiger auf ein neues Array
In der Theorie Punkt aktualisiert wird, scheint die Lösung einfach ... aber ich bin ein noob von c. Wo ist das falsch?
struct task {
char title[50];
int execution;
int priority;
};
struct task tasks = *p;
int main() {
//he will call the increaseSize() somewhere...
}
void increaseSize(){
int dimension = (sizeof(*p)/sizeof(struct task));
struct task newTasks[dimension+1];
for(int i=0; i<dimension; i++){
newTasks[i] = *(p+i);
}
free(&p);
p = newTasks;
}
'sizeof (* p)/sizeof (struct task)' sieht sehr verdächtig aus – harold
'struct task tasks = * p;' was ist 'p'? – joop
p sollte das Array sein, in dem Tasks derzeit verknüpft sind –