Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Probleme bei Typkonventierungen in C++

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
13.12.2006, 00:07 Uhr
Deagle



moin,

als aller erstes würde ich gerne im Allgemeinen Fragen,was "Konventierung" bedeutet
naja bei dem const_cast ..


C++:
const *char Cvar = "Hallo";
char *var;
var = const_cast<char*>(Cvar);



... versteh ich zwar,wie das augebaut ist,dennoch aber nicht,wozu es da ist/wie man es anwendet und warum bei "Cvar" => eine Zeichenkette herauskommt,obwohl Char ein DatenTyp für Buchstaben gedacht ist

Von den anderen Typkonventierungen brauchen wir erst nicht mehr reden
Ich hoffe,dass ihr meine Frage versteht und sie mir auch bitteschön(das Zauberwort ^^ muahaaha)beantworten könntet


Mit freundlichen Grüßen,
Deagle, Daniel
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.12.2006, 00:23 Uhr
Blubber2063



Das liegt daran weil Zeichenketten Felder von Buchstaben sind. D.h. das sind chars die direkt hintereinander im Speicher liegen. Da Felder in C aber durch einen Zeiger auf das erste Element repräsentiert werden stimmt der Typ und der Compiler kennt ja durch die gegebene Zeichenkette die Größe des Feldes, daher übernimmt er das erzeugen des Feldes in der richtigen Größe. Der const cast ist ein bischen böse, weil er den modifier const(nicht veränderbar) entfernen kann.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.12.2006, 11:24 Uhr
Deagle



hi,

könntest du mir aber bitte erklären,wie das funktioniert?
Ich habe mir schon etwas überlegt,aber ich verstehe es noch leider nicht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.12.2006, 11:44 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Du meinst mit Zeiger?
Es ist generell so, du hast einen Zeiger (char*) und char ist genau ein zeichen. Nun hast du allerdings via zuweisung dem char* gesagt, wieviele Zeichen du haben willst, ab der Anfangsadresse, auf die char* zeigt. Also ist beispielsweise
C++:
char* foo = "bla";
vergleichbar mit einem array der Länge 4 (abschließendes \0). Wenn du es ausgeben willst, gehst du nun vor die Speicherstelle, an der das "b" steht und gibst ab da 4 Blöcke der Länge sizeof(char) zurück. Jeder Block enthällt ein Buchstaben. Nun deutlicher?
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
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: