Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.12.2006, 09:00

Verständnisfrage zu Listing 8.11

Ich habe eine Frage, dabei habe ich schon lange über eine Antwort nachgedacht, aber keine gefunden. Deshalb versuche ich es nun auf diesem Weg.
Es geht um Listing 8.11, also "Die Header-Datei der Logfile-Klasse".
Dort gibt es mehrere Memberfunktionen wie z.B.:

C-/C++-Quelltext

1
2
void CreateLogfile (const char *LogName);
void Textout (const char *Text);


...usw. Ich frage mich nun warum werden die Parameter als Zeiger deklariert? Später übergibt man doch normalen Text und keine Adressen...

Meine zweite Frage ist, ob mir jemand kurz erklären könnte, wie der Speicheralgorithmus in diesem Beispiel genau funktioniert, was da passiert (#include <stdio.h>, FILE...)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

28.12.2006, 10:27

Re: Verständnisfrage zu Listing 8.11

Zitat von »"Sebastian"«

Ich frage mich nun warum werden die Parameter als Zeiger deklariert? Später übergibt man doch normalen Text und keine Adressen...

Ein char speichert 1 Zeichen.
Hinter einem Zeiger auf ein char (char*) steht eine ganze Zeichenkette, die so lang ist bis ein Zeichen Null ist, also ein Text.

Wenn du in deinem Programm schreibst:

C-/C++-Quelltext

1
"Hallo"


dann macht der Compiler daraus eine Zeichenkette.
Und um diese Zeichenkette zu verwenden, nimmt man den Zeiger auf ihr erstes Zeichen. "Hallo" ist von ganz allein vom Typ char*. Es gibt in C++ keinen eingebauten Text-Datentyp wie in BASIC oder anderen Sprachen. Wenn man mehr Komfort haben will, nimmt man std::string.

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

3

28.12.2006, 11:45

außerdem kannst du wie oben gesagt die Anzahl der zu übergenden Zeichen variabel halten!

4

28.12.2006, 14:58

Das heißt, dass der String so lang ist, bis ein Leerzeichen kommt (oder was ist "0")...habe sonst nur mit Delphi gearbeitet deshalb fällt mir das nen bisschen schwer...

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

5

28.12.2006, 15:41

unsigned char bietet platz für 256 Zeichen... 0-255 ein leerzeichen ist irgendein wert zwischendrin... 0 ist 0 bzw '\0' als escapesequenz.

Werbeanzeige