[c] Speicherplatz für 99 int variablen reservieren

BastianW

Mitglied
Hallo zusammen,

ich sitzte hier gerade an der function malloc und wie ich damit den Speicherplatz für 99 int variablen reservieren kann.

Würde das folgende Konstrukt so klappen:

Code:
int *p = (int *) malloc(99 * sizeof(int));

Wenn ich die Doku dann verstanden habe könnte ich dann mittels:

p[0] = 99;
p[1] = 23;
...
p[98] = 32

auf die variablen dann zugreifen.


Frage 1:
Stimmt das auch so?

Frage 2:
Ist es richtig das ich hier mit p[0] anfange? Ein p[99] wirds dann ja nicht geben.
 
zu 2. ja es ist richtig wenn du mit p[0] anfängst. es woird bei arrays immer bei 0 angefangen
 
@

1.)
Sorry meinte nicht Funktion im function Sinn, sondern vielmehr meinen code:
Code:
int *p = (int *) malloc(99 * sizeof(int));

2.)
Ah super ok... Ja das ist mir als ich mit C Angefangen habe auch schon aufgefallen. Bei anderen Sprachen mehr oder weniger kein Problem. Bei C kann das unter umständen manchmal Merkwürdige Ergebnisse liefern ;-).
 
Warum probierst du es nicht aus ? Angst dein Rechner geht kaputt ? :suspekt:
Die Funktion malloc reserviert soviel Bytes wie du beim Parameter übergibst und zwar an einem Stück ;)
 
ja diese Zeile reservierd dir ein int array mit 99 Einträgen.

C++:
#include <stdio.h>
#include <malloc.h>

main() {
    int  *p;
    int j, i, sum;

    p = (int *)malloc(99 * sizeof(int)); 
    printf("die Reservierung ist %16lu \n",p);
    
    if(!p) 
        printf("es konnte kein Speicher reserviert werden \n");
    else {    
      for(j = 0; j < 99; j++)
          *(p+j)=5;
    }
    sum = 0;
     
    for(j = 0; j < 99; j++)
      sum = sum + *(p+j);
    printf("total sum %d\n",sum);
    
    free(p);
    
    printf("addr der Reservierung ist %16lu \n",p);
    p = (int *)malloc(99* sizeof(int));
    printf("p Reservierung  ist %16lu \n",p);
    p = (int *)malloc(99* sizeof(int));
    printf("p Reservierung ist %16lu \n",p);
    p = (int *)calloc(10,2);  
    printf("p Reservierung ist %16lu \n",p);
}
 
Zuletzt bearbeitet von einem Moderator:
Mir gehts hier auch etwas mehr darum das man mir Hilft wenn ich in die Falsche Richtung gehe...

Klar kann ich versuchen herauszufinden ob das nun so klappt wie ich es mir vorstelle. Doch bevor ich mit meinen Grundlagen C Kenntnissen frustriert an dieser Geschichte Stundenlang drann hänge und dann ganz mit C aufhöhre, fänd ich es nett wenn man mir sagt wie man so etwas richtig löst (Speicherplatz für 99 int variablen reservieren) :).

Klar lernt man aus Fehlern, aber es handelt sich hier ja vielmehr um eine Verständnissfrage :).
 
Zurück