Changing Array innerhalb der Funktion in C

Ich lerne C und bin verwirrt, warum sich ein Array, das in der Hauptfunktion erstellt wurde, nicht innerhalb der Funktion ändert. Ich gehe davon aus, dass das übergebene Array ein Zeiger ist und das Ändern des Zeigers das Array hätte ändern müssen, richtig? kann jemand erklären, was in diesem fall passiert?

thx für die Hilfe.

int main(){
    int i, length = 10;
    int array[length];

    for (i = 0 ; i < length ; i++)
        array[i] = i * 10;
    printf("Before:");
    print(array, length);
    change(array, length);
    printf("After:");
    print(array, length);

    return 0;
}

// Print on console the array of int
void print(int *array,int length)
{
    int i;
    for(i = 0 ; i < length ; i++)
        printf("%d ", array[i]);
    printf("\n");
}

// Change the pointer of the array
void change(int *array,int length)
{
    int *new = (int *) malloc(length * sizeof(int));
    int i;
    for(i = 0 ; i < length ; i++)
        new[i] = 1;
    array = new;
}

Ich habe erwartet, die folgende Ausgabe zu sehen:

Before:0 10 20 30 40 50 60 70 80 90 
After:1 1 1 1 1 1 1 1 1 1 

Was bekomme ich:

Before:0 10 20 30 40 50 60 70 80 90 
After:0 10 20 30 40 50 60 70 80 90 

Antworten auf die Frage(12)

Ihre Antwort auf die Frage