Forum: PC-Programmierung dynamische Speicherreservierung/ Verständnisproblem


von Trudi (Gast)


Lesenswert?

Hallo
wird bei dem "Kommentar 1" Speicher für ein Text mit der Länge der 
Zufallszahl angelegt?

1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <time.h>
4
#define maxlen       70
5
#define ARRAYLENGTH 3
6
7
char* zeichenarray [ARRAYLENGTH] ={0};
8
9
char* zufalltext ()
10
{
11
    int zufallszahl=0;
12
    int z=0;
13
    char *text;
14
    zufallszahl=rand() % maxlen+1;  
15
    text = malloc( zufallszahl+1);  //1) wird hier Speicher für ein Text   
16
    text[zufallszahl]='\0';         // mit der Länge der Zufallszahl angelegt?   
17
    for (z=0; z<zufallszahl ;z++)
18
    {
19
        text[z]='A'+ rand() %26;
20
21
    }
22
    return text;
23
}

weshalb muss es nicht heißen
1
text = malloc [ zufallszahl+1];??
bei
1
text = malloc ( zufallszahl+1);
 hätte ich gedacht das Speicher für ein Zeichen reserviert wird und dann 
mit dem Buchstaben der der Zufallszahl +1 entspricht initialisiert wird.

Grüße Trudi

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Trudi schrieb:
> weshalb muss es nicht heißen
> text = malloc [ zufallszahl+1];??

Weil malloc eine Funktion ist und Funktionsparameter nun mal in runden 
Klammern übergeben werden.

Ein C-Buch zu lesen gefällt Dir konzeptionell nicht?

von Peter II (Gast)


Lesenswert?

Trudi schrieb:
> weshalb muss es nicht heißen
> text = malloc [ zufallszahl+1];??

weil Funktionsaufrufe mit einer () gemacht werden.

von Peter II (Gast)


Lesenswert?

> wird bei dem "Kommentar 1" Speicher für ein Text mit der Länge der
> Zufallszahl angelegt?
ja

von Oliver S. (oliverso)


Lesenswert?

Ganz ehrlich, diesen Text zu tippen hat bestimmt mehrere Minuten 
gedauert. Einmal malloc in google einzutippen dauert keine 3 Sekunden, 
und danach wären alle deine Fragen beantwortet gewesen.

Oliver

von Trudi (Gast)


Lesenswert?

und in c++ müsste ich dann schreiben
1
...
2
text = new char ( zufallszahl+1);   
3
...
?

Trudi

von Peter II (Gast)


Lesenswert?

Trudi schrieb:
> und in c++ müsste ich dann schreiben

nein.

von Trudi (Gast)


Lesenswert?

wie dann?
Trudi

von Peter II (Gast)


Lesenswert?

Trudi schrieb:
> wie dann?
> Trudi

was ist denn text für eine Datentype?

Was steht in deinen C-Buch dazu?

von Trudi (Gast)


Lesenswert?

Peter II schrieb:
> was ist denn text für eine Datentype?
char

von Max T. (charmquark)


Lesenswert?

Trudi schrieb:
> Peter II schrieb:
>> was ist denn text für eine Datentype?
> char

Da fehlt noch ein nicht unwichtiges Detail.

von Trudi (Gast)


Lesenswert?

Max TBA schrieb:
> Da fehlt noch ein nicht unwichtiges Detail.

Ein Pointer auf char

Trudi

von Trudi (Gast)


Lesenswert?

muss wohl heißen:

text = new char [ zufallszahl+1];

weshalb  auch immer!

von Peter II (Gast)


Lesenswert?

Trudi schrieb:
> weshalb  auch immer!

wenn du das nicht rausbekommst, bist du bei C/C++ falsch.

von Karl H. (kbuchegg)


Lesenswert?

Trudi schrieb:
> muss wohl heißen:
>
> text = new char [ zufallszahl+1];
>
> weshalb  auch immer!

Ganz einfach:
Weil C++ nun mal nicht C ist und 'new' nun mal nicht 'malloc' ist.

Oder beschwerst du dich auch, dass an der Hotelrezeption in Kiribati 
keiner Deutsch spricht? Und das, egal wie laut du sprichst?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.