char*
-
Ich habe lange überlegt ob ich das schreiben soll^^ aber wenn man besser werden will muss man es einfach.(nicht lachen!)Was genau bedeutet char* soll das " * "
ein pointer bzw zeiger sein?
Die Antwort soll idiotensicher sein
falls möglich.Ps: bin ein blutiger anfänger und lerne schon seit 1 monat c++
was ich biss jetzt kann^^:arrays(mittelmäßig),klassen,schleifen.konstruktoren,und noch ein paar andere sachen. Worauf ich stolz bin ist dass ich ein schlechtes tic tac tou spiel programmieret habe.Ist aber eigentlich irrelevant.
danke im vorrauß
-
Wenn
char*ein Typ ist, bedeutet das Sternchen soviel wie "Zeiger". Somit liest es sich so vor: "Char-Zeiger" oder "Zeiger auf Char". Ein Zeiger auf einen Char kann jedoch noch eine andere Bedeutung haben
.
-
Danke
ich meine sowas dieses char*Krieger::Krieger(const char* Name,int leben,int kraft,bool waffe,bool sex){
strncpy(szName,Name,sizeof(szName) -1);
szName [sizeof (szName) ] = NULL;
iLeben = leben;
iKraft = kraft;
bwaffe = waffe;
bsex = sex;
-
Oh. Das ist die zweite Bedeutung die ich angedeutet habe. Wenn du den Code geschrieben hast, solltest du dich mit
std::stringvertraut machen. Wenn nicht, solltest du die Finger davon lassen. Das Konstrukt dort nennt man einen C-String und ist ein Überbleibsel aus C. Es ist sehr fehleranfällig und verwirrend für Neulinge.
-
Gamestarize schrieb:
iLeben = leben;
iKraft = kraft;Sind das neuartige Apfelprodukte? Falls nicht, es ist total out seine Variablen so zu nennen

Gamestarize schrieb:
szName [sizeof (szName) ] = NULL;
Überlege, warum dieser Code niemals korrekt sein kann

-
cooky451 schrieb:
Gamestarize schrieb:
iLeben = leben;
iKraft = kraft;Sind das neuartige Apfelprodukte?

-
Dein Krieger-Funktionsaufruf schaut für mich so aus, als ob die Parameter Name, leben, kraft, waffe und sex auf andere Variablen übertragen werden.
char* Name, bzw. char *Name bedeutet "hardwarenah", dass die Adresse einer Variablen vom Typ char in Name gespeichert wird.
*Name (sprich der Inhalt von Name, was ja eine Adresse ist) ist vom Typ char.
Damit kann man in C Felder an Funktionen übergeben, ein char-Feld ist ein String. Man übergibt die erste Adresse, das i-te Element bekommt man mit Name[i] oder *(Name+i).
Der "Adresse" Name kann man auch eine andere Adresse verpassen:char *Name; char bsp='y'; Name=&bsp; // & bedeutet Adresse von //Der Inhalt vom Pointer Name ist jetzt y. //(*Name)++: bsp erhöhen, d.h. bsp='z' //Name++: Zeiger verschieben
-
Gamestarize schrieb:
Was genau bedeutet char*
soll das " * " ein pointer bzw zeiger sein?Was sagt denn Dein Buch dazu?
Die Deklarationssyntax ist anfangs nicht ganz einfach zu verstehen, ist aber eigentlich gar nicht soooo wild. Sie besteht aus zwei Teilen, dem Typ-Spezifizierer und dem Deklarator. Im einfachsten Fall:
int i;Typspezifizierer links, Deklator rechts. Der Deklarator kann aber auch mehr als nur ein Name sein. Beispiel:
int *i;Hier ist *i der Deklarator. Die Deklaration sagt, dass der Ausdruck *i im späteren Verlauf ein int sein soll. Und weil * der Dereferenzierungsoperator ist, ist i folglich ein Zeiger auf ein int-Objekt. Du kannst Deklarationen von innen nach außen lesen bzw von rechts nach links. "i ist ein Zeiger auf int". Komplizierter wird es mit Arrays und Funktionen, da Index- und Klammer-Operator auf der anderen Seite stehen (wie beim Ausdruck auch).
int (*i)(double);"i ist ein Zeiger auf eine Funktion, die ein double bekommt und ein int zurückgibt". Wo man da das Leerzeichen hinsetzt ist übrigens egal.
int*i; int *i; int* i; int * i;Gamestarize schrieb:
Ps: bin ein blutiger anfänger und lerne schon seit 1 monat c++
Mit welchem Buch?
Die Tatsache, dass Du hier char-Arrays/Zeiger und die dazugehörigen C-String-Funktionen statt std::string verwendest, lässt mich nichts gutes hoffen.
kk
-
ich arbeite mir 3 büchernxD unteranderem c++ von A bis Z
-
krümelkacker schrieb:
Gamestarize schrieb:
Was genau bedeutet char*
soll das " * " ein pointer bzw zeiger sein?Was sagt denn Dein Buch dazu?
Die Deklarationssyntax ist anfangs nicht ganz einfach zu verstehen, ist aber eigentlich gar nicht soooo wild. Sie besteht aus zwei Teilen, dem Typ-Spezifizierer und dem Deklarator. Im einfachsten Fall:
int i;Typspezifizierer links, Deklator rechts. Der Deklarator kann aber auch mehr als nur ein Name sein. Beispiel:
int *i;Hier ist *i der Deklarator. Die Deklaration sagt, dass der Ausdruck *i im späteren Verlauf ein int sein soll.
Da bin ich mal gespannt, wie du diese Erklärung auf
int &i;anwenden würdest
@Gamestarize: Also bei diesem Buch gehen die Meinungen hier in die Richtung, daß es eher als Briefbeschwerer geeignet statt als Lernhilfe f+ C++ Anfänger.
-
Das Buch ist also immernoch im Umlauf ;O