Super schwere frage (*array, funktion)



  • Hallo als erstes,

    ich habe in der mein als ertes ein zieger auf ein array deklariert und zwar so

    int *Array;

    danach den zeiger auf NULL gestelt und zwar so

    *Array=NULL; //DER COMPILER SAGT NULL NICHT IDETIFIZIERT

    Warum???

    Danach habe ich *Array an der funktion übergegen wie hier z.b.

    foo(array, size)

    Nun in der funktion drinen:

    int foo(int array, size)
    {
    for(int i=0;i<size;i++)
    {
    array[i]=3;//Fehler
    printf("%d", array[i]);//Fehler
    }

    wiso das ales kann mir einer ein programm schiken das so ein array in einer funktion schikt????bitte



  • Master User schrieb:

    Hallo als erstes,

    ich habe in der mein als ertes ein zieger auf ein array deklariert und zwar so

    int *Array;

    danach den zeiger auf NULL gestelt und zwar so

    *Array=NULL; //DER COMPILER SAGT NULL NICHT IDETIFIZIERT

    Warum???

    Damit wolltest du wahrscheinlich den Zeiger auf NULL setzten, und nicht den
    Inhalt des Zeigers - was auch gar nicht ginge, da noch gar keine Speicher
    hinter Array liegt. Richtig: Array = NULL;

    Master User schrieb:

    Danach habe ich *Array an der funktion übergegen wie hier z.b.

    foo(array, size)

    Nun in der funktion drinen:

    int foo(int array, size)
    {
    for(int i=0;i<size;i++)
    {
    array[i]=3;//Fehler
    printf("%d", array[i]);//Fehler
    }

    wiso das ales kann mir einer ein programm schiken das so ein array in einer funktion schikt????bitte

    Der Prototyp für deine Funktion ist falsch. Muss heißen:

    int foo(int* array, int size);
    

    Lies dir lieber noch mal in Ruhe durch, was Zeiger sind und was sie bedeuten.

    Edit: Und nie vergessen, genug Speicher zu reservieren und den dann auch wieder
    freizugeben 😃


Anmelden zum Antworten