Peter W.: Fragen zu Arrays in C

Beitrag lesen

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?