Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Wofür double pointer

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.04.2012, 22:34 Uhr
banshee



Hi,

mal abgesehen von sowas wie mehrdimensionalen Arrays, die man über die Pointer-Notation anspricht, frage ich mich z.B. in diesen Beispielen, welchen Sinn der double pointer hat bzw. wieso man nicht mit einem einfachen Pointer auskommt.

Warum:


C++:
FILE *in;
fopen_s(&in, file, "r");



C++:
char *stream = data;
XMLNode *out = new XMLNode(&stream);


Warum definiert man die aufgerufene Funktion in beiden Fällen nicht so, dass ein einfacher Zeiger verwendet wird? Es scheint so als müsste man sich nur durch eine weitere Zeigerebene "durchwurschteln" ohne das es groß weiterhilft.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.04.2012, 15:58 Uhr
ao

(Operator)


Oberes Beispiel: Unter FILE * versteht die C-Runtime ein Handle auf eine Datei. Das Handle wird durch fopen_s erzeugt und muss dem Aufrufer zur Verfügung gestellt werden, damit er es in fwrite, fread, fclose & Co. verwenden kann.

FILE** ist der C-Weg, einen FILE* "by reference" zu übergeben, so dass fopen_s dem Parameter einen Wert zuweisen und ihn dem Aufrufer zurückgeben kann. Näheres über Call-by-reference siehe hier: http://de.wikipedia.org/wiki/Call_by_reference

Welchen Sinn das zweite Beispiel hat, verstehe ich gerade nicht. Was für ein Typ ist XMLNode?

Dieser Post wurde am 16.04.2012 um 16:00 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.04.2012, 10:55 Uhr
banshee



Ok das erste Beispiel klingt logisch.

XMLNode ist ein Knoten, der beim Parsen eines XML files entsteht. Durch diese Doppelzeiger entstehen dann so unschöne Abfragen wie:


C++:
if(**stream == '<' && (*stream)[1] == '?')
{
... // XML Kommentar parsen
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.04.2012, 11:46 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


klingt als würdest du tinyxml direkt verwenden, statt ticpp zu nehmen ( http://code.google.com/p/ticpp/ )
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: