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?

: Bearbeitet durch User
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.