Verständnisfrage - Zeiger und Arrays



  • Kurz und schmerzlos:

    wird bei

    int* ptr1 = (int*) malloc (3*sizeof(int));
    

    eine Array (int malloc[3]) zugewiesen?
    Oder was bedeutet

    (int*) malloc (3*sizeof(int));
    

    ??

    Danke :).



  • dennisli schrieb:

    Kurz und schmerzlos:

    wird bei

    int* ptr1 = (int*) malloc (3*sizeof(int));
    

    eine Array (int malloc[3]) zugewiesen?

    Nein, das ist ein Aufruf der Funktion malloc(). malloc() besorgt vom Heap ein bisher unbenutztes Objekt der Größe 3*sizeof(int) Bytes und gibt einen Zeiger darauf vom Typ void* zurück. Falls das nicht möglich ist, gibt malloc einen Nullzeiger zurück. Der void* wird dann in einen int* umgewandelt, um ptr1 damit zu initialisieren.



  • Bashar schrieb:

    Nein, das ist ein Aufruf der Funktion malloc(). malloc() besorgt vom Heap ein bisher unbenutztes Objekt der Größe 3*sizeof(int) Bytes und gibt einen Zeiger darauf vom Typ void* zurück. Falls das nicht möglich ist, gibt malloc einen Nullzeiger zurück. Der void* wird dann in einen int* umgewandelt, um ptr1 damit zu initialisieren.

    Also einfach die C-Variante von

    int* ptr1 = new int[3];
    

Anmelden zum Antworten