Was hat es mit größen von int Werte auf sich?



  • Hallo!!

    Ich habe erst vor kurzem zum progarmmieren angefangen und ich hab ein ganz banale frage also!

    Was bedeutet es wenn ich Speicherplatz für 2 Int Werte alloziiere z.b.:

    p = (int *)malloc(2 * sizeof(int));
    

    Wie groß darf dann die Zahl sein und muss ich dabei die Stellen beachten also ob die 10^2 oder 10^5 stellen hat??

    mfg



  • Der Wertebereich von int ist nicht festgelegt kommt auf deinem verwendeten Compiler an typischweise ist er bei -2147483648 bis 2147483647.
    Wenn du mit zwei int werte mit malloc reserviert hat das erstmal nichts mit der größe der Zahl zu tuen. Tu hast einfach ein Array von zwei int Werten angelegt p[0] = INT Größe und p[1] = int Größe



  • Ok!
    Und wenn ich dann ein jetzt ein

    p = realloc(p, 3 * sizeof(int));
    

    dann hätte ich p[0] bis p[4] oder??



  • nein dann hast du p[0] bis p[2] also 3 INT Werte. Mit realloc kannst du dynamisch speicherbereich vergrößern aber auch verkleinern.
    Wenn du die vorherige Größe von p plus zusätzlich drei mehr reserverien willst dann geht folgendes:

    p = realloc(p, 3 * sizeof(int)*sizeof(p));
    

    D.h. die Größe von p wird mit sizeof(p) bestimmt. Jetzt hättest du p[0] bis p[4].



  • Ok danke!


Anmelden zum Antworten