Moin!
Ich habe hier ein kleines Problem mit C bei dem ich nicht recht weiter weiß:
Gegeben ist eine Funktion, deren Prototyp so aussieht:
int func(int *list, size_t size)
Nun soll die Funktion folgendes machen:
- gebe das erst Feldelement zurück, also list[0]
- verkürze das Array list derart das list[0] entfernt wird und somit nur noch size - 1 Elemente darin enthalten sind
Folgender Code soll das ganze erreichen:
#include <stdio.h>
#include <stdlib.h>
int func(int *list, size_t size) {
int ret = list[0];
int *newlist = malloc((size - 1) * sizeof(int));
int i;
for(i = 1; i < size; i++)
newlist[i-1] = list[i];
list = newlist;
return ret;
}
int main(int argc, char *argv[]) {
int *list = malloc((argc-1) * sizeof(int));
int ret;
int i;
for(i = 1; i <= argc-1; i++) {
printf("%d\n", atoi(argv[i]));
list[i-1] = atoi(argv[i]);
}
func(list, argc-1);
printf("Neuer Listeninhalt: \n");
for(i = 0; i < argc-2; i++) {
printf("Index %d: Wert %d\n", i, list[i]);
}
free(list);
return 0;
}
Leider funktioniert dies jedoch nicht - list beginnt auch nach dem Aufruf von func() noch mit dem ersten Element. Irgendeine Idee woran das liegt?